From: Karl Skomski Date: Fri, 14 Aug 2015 12:35:41 +0000 (+0200) Subject: crypto: fix memory leak in PBKDF2Request X-Git-Tag: v4.0.0-rc.1~168 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a40ae513bb99ec3f85ea5b864a366bc7552d61f0;p=platform%2Fupstream%2Fnodejs.git crypto: fix memory leak in PBKDF2Request PR-URL: https://github.com/nodejs/node/pull/2375 Reviewed-By: Ben Noordhuis --- diff --git a/src/node_crypto.cc b/src/node_crypto.cc index 10223df..14da905 100644 --- a/src/node_crypto.cc +++ b/src/node_crypto.cc @@ -4624,6 +4624,7 @@ class PBKDF2Request : public AsyncWrap { } ~PBKDF2Request() override { + release(); persistent().Reset(); } @@ -4665,10 +4666,15 @@ class PBKDF2Request : public AsyncWrap { inline void release() { free(pass_); + pass_ = nullptr; passlen_ = 0; + free(salt_); + salt_ = nullptr; saltlen_ = 0; + free(key_); + key_ = nullptr; keylen_ = 0; } @@ -4739,7 +4745,6 @@ void EIO_PBKDF2After(uv_work_t* work_req, int status) { Local argv[2]; EIO_PBKDF2After(req, argv); req->MakeCallback(env->ondone_string(), ARRAY_SIZE(argv), argv); - req->release(); delete req; } @@ -4850,6 +4855,9 @@ void PBKDF2(const FunctionCallbackInfo& args) { Local argv[2]; EIO_PBKDF2(req); EIO_PBKDF2After(req, argv); + + delete req; + if (argv[0]->IsObject()) env->isolate()->ThrowException(argv[0]); else