crypto: fix crash when calling digest after piping
When piping data into an SHA3 hash, EVP_DigestFinal_ex
is called in hash._flush
, bypassing safeguards in the JavaScript layer. Calling hash.digest
causes EVP_DigestFinal_ex
to be called again, resulting in a segmentation fault in the SHA3 implementation of OpenSSL.
A relatively easy solution is to cache the result of calling EVP_DigestFinal_ex
until the Hash
object is garbage collected.
Fixes: https://github.com/nodejs/node/issues/28245
Checklist
-
make -j4 test
(UNIX), orvcbuild test
(Windows) passes -
tests and/or benchmarks are included -
commit message follows commit guidelines