Skip to content

Commit 5c2e1eb

Browse files
committed
crypto: fix memory leak in PBKDF2Request
1 parent e41eb9d commit 5c2e1eb

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

src/node_crypto.cc

+9-1
Original file line numberDiff line numberDiff line change
@@ -4624,6 +4624,7 @@ class PBKDF2Request : public AsyncWrap {
46244624
}
46254625

46264626
~PBKDF2Request() override {
4627+
release();
46274628
persistent().Reset();
46284629
}
46294630

@@ -4665,10 +4666,15 @@ class PBKDF2Request : public AsyncWrap {
46654666

46664667
inline void release() {
46674668
free(pass_);
4669+
pass_ = nullptr;
46684670
passlen_ = 0;
4671+
46694672
free(salt_);
4673+
salt_ = nullptr;
46704674
saltlen_ = 0;
4675+
46714676
free(key_);
4677+
key_ = nullptr;
46724678
keylen_ = 0;
46734679
}
46744680

@@ -4739,7 +4745,6 @@ void EIO_PBKDF2After(uv_work_t* work_req, int status) {
47394745
Local<Value> argv[2];
47404746
EIO_PBKDF2After(req, argv);
47414747
req->MakeCallback(env->ondone_string(), ARRAY_SIZE(argv), argv);
4742-
req->release();
47434748
delete req;
47444749
}
47454750

@@ -4850,6 +4855,9 @@ void PBKDF2(const FunctionCallbackInfo<Value>& args) {
48504855
Local<Value> argv[2];
48514856
EIO_PBKDF2(req);
48524857
EIO_PBKDF2After(req, argv);
4858+
4859+
delete req;
4860+
48534861
if (argv[0]->IsObject())
48544862
env->isolate()->ThrowException(argv[0]);
48554863
else

0 commit comments

Comments
 (0)