diff options
Diffstat (limited to 'src/tls_wrap.cc')
-rw-r--r-- | src/tls_wrap.cc | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/src/tls_wrap.cc b/src/tls_wrap.cc index 779587fe36..20bbce50de 100644 --- a/src/tls_wrap.cc +++ b/src/tls_wrap.cc @@ -54,6 +54,9 @@ TLSWrap::TLSWrap(Environment* env, node::Wrap(object(), this); MakeWeak(this); + // sc comes from an Unwrap. Make sure it was assigned. + CHECK_NE(sc, nullptr); + // We've our own session callbacks SSL_CTX_sess_set_get_cb(sc_->ctx_, SSLWrap<TLSWrap>::GetSessionCallback); SSL_CTX_sess_set_new_cb(sc_->ctx_, SSLWrap<TLSWrap>::NewSessionCallback); @@ -188,7 +191,8 @@ void TLSWrap::Wrap(const FunctionCallbackInfo<Value>& args) { void TLSWrap::Receive(const FunctionCallbackInfo<Value>& args) { - TLSWrap* wrap = Unwrap<TLSWrap>(args.Holder()); + TLSWrap* wrap; + ASSIGN_OR_RETURN_UNWRAP(&wrap, args.Holder()); CHECK(Buffer::HasInstance(args[0])); char* data = Buffer::Data(args[0]); @@ -213,7 +217,8 @@ void TLSWrap::Receive(const FunctionCallbackInfo<Value>& args) { void TLSWrap::Start(const FunctionCallbackInfo<Value>& args) { Environment* env = Environment::GetCurrent(args); - TLSWrap* wrap = Unwrap<TLSWrap>(args.Holder()); + TLSWrap* wrap; + ASSIGN_OR_RETURN_UNWRAP(&wrap, args.Holder()); if (wrap->started_) return env->ThrowError("Already started."); @@ -731,7 +736,8 @@ int TLSWrap::DoShutdown(ShutdownWrap* req_wrap) { void TLSWrap::SetVerifyMode(const FunctionCallbackInfo<Value>& args) { Environment* env = Environment::GetCurrent(args); - TLSWrap* wrap = Unwrap<TLSWrap>(args.Holder()); + TLSWrap* wrap; + ASSIGN_OR_RETURN_UNWRAP(&wrap, args.Holder()); if (args.Length() < 2 || !args[0]->IsBoolean() || !args[1]->IsBoolean()) return env->ThrowTypeError("Bad arguments, expected two booleans"); @@ -763,7 +769,8 @@ void TLSWrap::SetVerifyMode(const FunctionCallbackInfo<Value>& args) { void TLSWrap::EnableSessionCallbacks( const FunctionCallbackInfo<Value>& args) { - TLSWrap* wrap = Unwrap<TLSWrap>(args.Holder()); + TLSWrap* wrap; + ASSIGN_OR_RETURN_UNWRAP(&wrap, args.Holder()); if (wrap->ssl_ == nullptr) { return wrap->env()->ThrowTypeError( "EnableSessionCallbacks after destroySSL"); @@ -777,7 +784,8 @@ void TLSWrap::EnableSessionCallbacks( void TLSWrap::DestroySSL(const FunctionCallbackInfo<Value>& args) { - TLSWrap* wrap = Unwrap<TLSWrap>(args.Holder()); + TLSWrap* wrap; + ASSIGN_OR_RETURN_UNWRAP(&wrap, args.Holder()); // Move all writes to pending wrap->MakePending(); @@ -794,7 +802,8 @@ void TLSWrap::DestroySSL(const FunctionCallbackInfo<Value>& args) { void TLSWrap::EnableCertCb(const FunctionCallbackInfo<Value>& args) { - TLSWrap* wrap = Unwrap<TLSWrap>(args.Holder()); + TLSWrap* wrap; + ASSIGN_OR_RETURN_UNWRAP(&wrap, args.Holder()); wrap->WaitForCertCb(OnClientHelloParseEnd, wrap); } @@ -809,7 +818,8 @@ void TLSWrap::OnClientHelloParseEnd(void* arg) { void TLSWrap::GetServername(const FunctionCallbackInfo<Value>& args) { Environment* env = Environment::GetCurrent(args); - TLSWrap* wrap = Unwrap<TLSWrap>(args.Holder()); + TLSWrap* wrap; + ASSIGN_OR_RETURN_UNWRAP(&wrap, args.Holder()); CHECK_NE(wrap->ssl_, nullptr); @@ -826,7 +836,8 @@ void TLSWrap::GetServername(const FunctionCallbackInfo<Value>& args) { void TLSWrap::SetServername(const FunctionCallbackInfo<Value>& args) { Environment* env = Environment::GetCurrent(args); - TLSWrap* wrap = Unwrap<TLSWrap>(args.Holder()); + TLSWrap* wrap; + ASSIGN_OR_RETURN_UNWRAP(&wrap, args.Holder()); if (args.Length() < 1 || !args[0]->IsString()) return env->ThrowTypeError("First argument should be a string"); @@ -875,6 +886,7 @@ int TLSWrap::SelectSNIContextCallback(SSL* s, int* ad, void* arg) { p->sni_context_.Reset(env->isolate(), ctx); SecureContext* sc = Unwrap<SecureContext>(ctx.As<Object>()); + CHECK_NE(sc, nullptr); p->SetSNIContext(sc); return SSL_TLSEXT_ERR_OK; } |