From 312baacd934d53079e4e04fdcd9647660692f97e Mon Sep 17 00:00:00 2001 From: cjihrig Date: Sat, 3 Nov 2018 10:41:10 -0400 Subject: [PATCH 1/4] src: fix Get() usage in async_wrap.cc PR-URL: https://github.com/nodejs/node/pull/24060 Reviewed-By: Daniel Bevenius Reviewed-By: Anna Henningsen Reviewed-By: Joyee Cheung --- src/async_wrap.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/async_wrap.cc b/src/async_wrap.cc index 471fa231c2e861..52601ffc8f0c15 100644 --- a/src/async_wrap.cc +++ b/src/async_wrap.cc @@ -347,8 +347,13 @@ void AsyncWrap::WeakCallback(const v8::WeakCallbackInfo& info) { std::unique_ptr p{info.GetParameter()}; Local prop_bag = PersistentToLocal(info.GetIsolate(), p->propBag); + Local val; + + if (!prop_bag->Get(p->env->context(), p->env->destroyed_string()) + .ToLocal(&val)) { + return; + } - Local val = prop_bag->Get(p->env->destroyed_string()); if (val->IsFalse()) { AsyncWrap::EmitDestroy(p->env, p->asyncId); } From 5c9a4b23a80f98588632776e9787bbd7394c6729 Mon Sep 17 00:00:00 2001 From: cjihrig Date: Sat, 3 Nov 2018 11:24:50 -0400 Subject: [PATCH 2/4] src: fix Get() usage in tls_wrap.cc PR-URL: https://github.com/nodejs/node/pull/24060 Reviewed-By: Daniel Bevenius Reviewed-By: Anna Henningsen Reviewed-By: Joyee Cheung --- src/tls_wrap.cc | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/tls_wrap.cc b/src/tls_wrap.cc index 6bc152b2e24fca..1d982db28e2558 100644 --- a/src/tls_wrap.cc +++ b/src/tls_wrap.cc @@ -213,17 +213,22 @@ void TLSWrap::SSLInfoCallback(const SSL* ssl_, int where, int ret) { Local object = c->object(); if (where & SSL_CB_HANDSHAKE_START) { - Local callback = object->Get(env->onhandshakestart_string()); - if (callback->IsFunction()) { + Local callback; + + if (object->Get(env->context(), env->onhandshakestart_string()) + .ToLocal(&callback) && callback->IsFunction()) { Local argv[] = { env->GetNow() }; c->MakeCallback(callback.As(), arraysize(argv), argv); } } if (where & SSL_CB_HANDSHAKE_DONE) { + Local callback; + c->established_ = true; - Local callback = object->Get(env->onhandshakedone_string()); - if (callback->IsFunction()) { + + if (object->Get(env->context(), env->onhandshakedone_string()) + .ToLocal(&callback) && callback->IsFunction()) { c->MakeCallback(callback.As(), 0, nullptr); } } @@ -814,7 +819,10 @@ int TLSWrap::SelectSNIContextCallback(SSL* s, int* ad, void* arg) { // Call the SNI callback and use its return value as context Local object = p->object(); - Local ctx = object->Get(env->sni_context_string()); + Local ctx; + + if (!object->Get(env->context(), env->sni_context_string()).ToLocal(&ctx)) + return SSL_TLSEXT_ERR_NOACK; // Not an object, probably undefined or null if (!ctx->IsObject()) From ff0719d5fb6439c958aa4d9c225acaa3505edaa3 Mon Sep 17 00:00:00 2001 From: cjihrig Date: Sat, 3 Nov 2018 11:41:17 -0400 Subject: [PATCH 3/4] src: fix Set() usage in node.h PR-URL: https://github.com/nodejs/node/pull/24060 Reviewed-By: Daniel Bevenius Reviewed-By: Anna Henningsen Reviewed-By: Joyee Cheung --- src/node.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/node.h b/src/node.h index 5bbaa11def5c86..fbf9128be42429 100644 --- a/src/node.h +++ b/src/node.h @@ -369,7 +369,7 @@ inline void NODE_SET_METHOD(v8::Local recv, v8::Local fn_name = v8::String::NewFromUtf8(isolate, name, v8::NewStringType::kInternalized).ToLocalChecked(); fn->SetName(fn_name); - recv->Set(fn_name, fn); + recv->Set(context, fn_name, fn).FromJust(); } #define NODE_SET_METHOD node::NODE_SET_METHOD From 7c64133760528aed0dd9e7781056e6a5ea266a69 Mon Sep 17 00:00:00 2001 From: cjihrig Date: Sat, 3 Nov 2018 11:52:37 -0400 Subject: [PATCH 4/4] src: fix Set() usage in env-inl.h PR-URL: https://github.com/nodejs/node/pull/24060 Reviewed-By: Daniel Bevenius Reviewed-By: Anna Henningsen Reviewed-By: Joyee Cheung --- src/env-inl.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/env-inl.h b/src/env-inl.h index f0a8f2631f2398..6df74ba55a5da3 100644 --- a/src/env-inl.h +++ b/src/env-inl.h @@ -736,7 +736,7 @@ inline void Environment::SetMethod(v8::Local that, const v8::NewStringType type = v8::NewStringType::kInternalized; v8::Local name_string = v8::String::NewFromUtf8(isolate(), name, type).ToLocalChecked(); - that->Set(name_string, function); + that->Set(context, name_string, function).FromJust(); function->SetName(name_string); // NODE_SET_METHOD() compatibility. } @@ -756,7 +756,7 @@ inline void Environment::SetMethodNoSideEffect(v8::Local that, const v8::NewStringType type = v8::NewStringType::kInternalized; v8::Local name_string = v8::String::NewFromUtf8(isolate(), name, type).ToLocalChecked(); - that->Set(name_string, function); + that->Set(context, name_string, function).FromJust(); function->SetName(name_string); // NODE_SET_METHOD() compatibility. }