Skip to content

Commit 60132e8

Browse files
danbevjasnell
authored andcommitted
src: check IsConstructCall in TLSWrap constructor
Currently it is possible to call TLSWrap() without using new and the following error message: FATAL ERROR: v8::Object::SetAlignedPointerInInternalField() Internal field out of bounds 1: node::Abort() [/Users/danielbevenius/work/nodejs/node/out/Debug/node] 2: node::OnFatalError(char const*, char const*) [/Users/danielbevenius/work/nodejs/node/out/Debug/node] 3: v8::Utils::ReportApiFailure(char const*, char const*) [/Users/danielbevenius/work/nodejs/node/out/Debug/node] 4: v8::Utils::ApiCheck(bool, char const*, char const*) [/Users/danielbevenius/work/nodejs/node/out/Debug/node] 5: v8::InternalFieldOK(v8::internal::Handle<v8::internal::JSReceiver>, int, char const*) [/Users/danielbevenius/work/nodejs/node/out/Debug/node] 6: v8::Object::SetAlignedPointerInInternalField(int, void*) [/Users/danielbevenius/work/nodejs/node/out/Debug/node] 7: node::TLSWrap::Initialize(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Context>)::$_0::operator()(v8::FunctionCallbackInfo<v8::Value> const&) const [/Users/danielbevenius/work/nodejs/node/out/Debug/node] This commit adds a IsConstructCall check which will produce the following error message: /Users/danielbevenius/work/nodejs/node/out/Debug/node[2212]: ../src/tls_wrap.cc:936:auto node::TLSWrap::Initialize(Local<v8::Object>, Local<v8::Value>, Local<v8::Context>)::(anonymous class)::operator()(const FunctionCallbackInfo<v8::Value> &) const: Assertion `args.IsConstructCall()' failed. 1: node::Abort() [/Users/danielbevenius/work/nodejs/node/out/Debug/node] 2: node::Assert(char const* const (*) [4]) [/Users/danielbevenius/work/nodejs/node/out/Debug/node] 3: node::TLSWrap::Initialize(v8::Local<v8::Object>, v8::Local<v8::Value>, v8::Local<v8::Context>)::$_0::operator()(v8::FunctionCallbackInfo<v8::Value> const&) const [/Users/danielbevenius/work/nodejs/node/out/Debug/node] PR-URL: #13097 Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Colin Ihrig <[email protected]>
1 parent 57b9b9d commit 60132e8

File tree

1 file changed

+1
-0
lines changed

1 file changed

+1
-0
lines changed

src/tls_wrap.cc

+1
Original file line numberDiff line numberDiff line change
@@ -933,6 +933,7 @@ void TLSWrap::Initialize(Local<Object> target,
933933
env->SetMethod(target, "wrap", TLSWrap::Wrap);
934934

935935
auto constructor = [](const FunctionCallbackInfo<Value>& args) {
936+
CHECK(args.IsConstructCall());
936937
args.This()->SetAlignedPointerInInternalField(0, nullptr);
937938
};
938939
auto t = env->NewFunctionTemplate(constructor);

0 commit comments

Comments
 (0)