summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2018-09-23 19:10:54 +0200
committerAnna Henningsen <anna@addaleax.net>2018-09-26 00:32:12 +0200
commit2d65e67305a7c39f1c157f497fde25f3d84d9153 (patch)
treee4276e326c18f018323a12351cb248c5ce35ff9c
parentd102a85cd9d55342ec6ad46a274d24ae43c85ea5 (diff)
downloadandroid-node-v8-2d65e67305a7c39f1c157f497fde25f3d84d9153.tar.gz
android-node-v8-2d65e67305a7c39f1c157f497fde25f3d84d9153.tar.bz2
android-node-v8-2d65e67305a7c39f1c157f497fde25f3d84d9153.zip
worker: hide MessagePort init function behind symbol
This reduces unintended exposure of internals. PR-URL: https://github.com/nodejs/node/pull/23037 Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Michaƫl Zasso <targos@protonmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: James M Snell <jasnell@gmail.com>
-rw-r--r--lib/internal/worker.js5
-rw-r--r--src/env.h2
-rw-r--r--src/node_messaging.cc2
-rw-r--r--src/node_worker.cc4
4 files changed, 9 insertions, 4 deletions
diff --git a/lib/internal/worker.js b/lib/internal/worker.js
index 4f797dd9e0..b5dab22421 100644
--- a/lib/internal/worker.js
+++ b/lib/internal/worker.js
@@ -24,7 +24,8 @@ util.inherits(MessagePort, EventEmitter);
const {
Worker: WorkerImpl,
getEnvMessagePort,
- threadId
+ threadId,
+ oninit: oninit_symbol
} = internalBinding('worker');
const isMainThread = threadId === 0;
@@ -93,7 +94,7 @@ function oninit() {
setupPortReferencing(this, this, 'message');
}
-Object.defineProperty(MessagePort.prototype, 'oninit', {
+Object.defineProperty(MessagePort.prototype, oninit_symbol, {
enumerable: true,
writable: false,
value: oninit
diff --git a/src/env.h b/src/env.h
index 4db8ae2baa..feeeda661c 100644
--- a/src/env.h
+++ b/src/env.h
@@ -113,6 +113,7 @@ struct PackageConfig {
#define PER_ISOLATE_SYMBOL_PROPERTIES(V) \
V(handle_onclose_symbol, "handle_onclose") \
V(owner_symbol, "owner") \
+ V(oninit_symbol, "oninit") \
// Strings are per-isolate primitives but Environment proxies them
// for the sake of convenience. Strings should be ASCII-only.
@@ -219,7 +220,6 @@ struct PackageConfig {
V(onhandshakedone_string, "onhandshakedone") \
V(onhandshakestart_string, "onhandshakestart") \
V(onheaders_string, "onheaders") \
- V(oninit_string, "oninit") \
V(onmessage_string, "onmessage") \
V(onnewsession_string, "onnewsession") \
V(onocspresponse_string, "onocspresponse") \
diff --git a/src/node_messaging.cc b/src/node_messaging.cc
index bb7344503e..6dd66f243e 100644
--- a/src/node_messaging.cc
+++ b/src/node_messaging.cc
@@ -421,7 +421,7 @@ MessagePort::MessagePort(Environment* env,
async()->data = static_cast<void*>(this);
Local<Value> fn;
- if (!wrap->Get(context, env->oninit_string()).ToLocal(&fn))
+ if (!wrap->Get(context, env->oninit_symbol()).ToLocal(&fn))
return;
if (fn->IsFunction()) {
diff --git a/src/node_worker.cc b/src/node_worker.cc
index aee97095a4..14a61ceb16 100644
--- a/src/node_worker.cc
+++ b/src/node_worker.cc
@@ -502,6 +502,10 @@ void InitWorker(Local<Object> target,
thread_id_string,
Number::New(env->isolate(),
static_cast<double>(env->thread_id()))).FromJust();
+ Local<String> oninit_string = FIXED_ONE_BYTE_STRING(env->isolate(), "oninit");
+ target->Set(env->context(),
+ oninit_string,
+ env->oninit_symbol()).FromJust();
}
} // anonymous namespace