fix: use proper return value check for EVP_CIPHER_CTX_ctrl()#36
fix: use proper return value check for EVP_CIPHER_CTX_ctrl()#36ndossche wants to merge 1 commit intonodejs:mainfrom
Conversation
jasnell
left a comment
There was a problem hiding this comment.
LGTM but this needs lint fixups before it can land.
|
Right, the problem is the asan output that's longer than the max line length. Do you have a preference how to solve this? |
Um.. the lint issues are pretty straight forward. Just fix them? |
This function can theoretically return -1, which would then be converted
to a truthy value. If this happens, then this can cause issues at the
use sites. E.g. for the test-crypto-cipheriv-decipheriv test in Node
this can cause a buffer overflow when we test with an injected error:
```
==714700==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x502000032b98
READ of size 12 at 0x502000032b98 thread T0
#0 0x558a7790bb97 in memcpy (/work/node/out/Debug/node+0x1b0bb97)
nodejs#1 0x7efe5386f90b (/lib/x86_64-linux-gnu/libcrypto.so.3+0x45f90b)
nodejs#2 0x7efe536312c2 in EVP_CipherInit_ex (/lib/x86_64-linux-gnu/libcrypto.so.3+0x2212c2)
nodejs#3 0x558a7d3e7785 in ncrypto::CipherCtxPointer::init
/work/node/out/../deps/ncrypto/ncrypto.cc:3328:10
nodejs#4 0x558a78512a1b in node::crypto::CipherBase::CommonInit
/work/node/out/../src/crypto/crypto_cipher.cc:366:13
nodejs#5 0x558a785125dd in node::crypto::CipherBase::InitIv
/work/node/out/../src/crypto/crypto_cipher.cc:409:3
nodejs#6 0x558a7850f5f4 in node::crypto::CipherBase::New
/work/node/out/../src/crypto/crypto_cipher.cc:328:11
nodejs#7 0x558a788ee605 in v8::internal::FunctionCallbackArguments::CallOrConstruct
/work/node/out/../deps/v8/src/api/api-arguments-inl.h:93:3
nodejs#8 0x558a788ec3ba in v8::internal::MaybeHandle<v8::internal::Object>
v8::internal::(anonymous namespace)::HandleApiCallHelper<true>
/work/node/out/../deps/v8/src/builtins/builtins-api.cc:104:16
nodejs#9 0x558a788e91fc in v8::internal::Builtin_Impl_HandleApiConstruct
/work/node/out/../deps/v8/src/builtins/builtins-api.cc:135:3
nodejs#10 0x558a788e91fc in v8::internal::Builtin_HandleApiConstruct
/work/node/out/../deps/v8/src/builtins/builtins-api.cc:126:1
nodejs#11 0x7efe31a951b5 (<unknown module>)
```
No, the commit message one isn't really. I just shortened the ASAN output a bit so that succeeds now. |
This function can theoretically return -1, which would then be converted to a truthy value. If this happens, then this can cause issues at the use sites. E.g. for the test-crypto-cipheriv-decipheriv test in Node this can cause a buffer overflow when we test with an injected error:
Note: this was found by a static-dynamic analyser I'm developing.