From 75590f00c60271b37b04d765d223f5ae7cbd812a Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Wed, 6 Mar 2019 15:25:18 +0100 Subject: [PATCH] process: delay creation of process.env after bootstrap/node.js Make sure that no code is allowed to access process.env during the execution of bootstrap/node.js. --- src/node.cc | 10 ++++++++++ src/node_process_object.cc | 12 ------------ 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/node.cc b/src/node.cc index 4def46ee167dbd..38dc98f5eafc15 100644 --- a/src/node.cc +++ b/src/node.cc @@ -340,6 +340,16 @@ MaybeLocal RunBootstrapping(Environment* env) { MaybeLocal result = ExecuteBootstrapper( env, "internal/bootstrap/node", &node_params, &node_args); + Local env_var_proxy; + if (!CreateEnvVarProxy(context, isolate, env->as_callback_data()) + .ToLocal(&env_var_proxy) || + process + ->Set(env->context(), + FIXED_ONE_BYTE_STRING(env->isolate(), "env"), + env_var_proxy) + .IsNothing()) + return MaybeLocal(); + env->set_has_run_bootstrapping_code(true); return scope.EscapeMaybe(result); diff --git a/src/node_process_object.cc b/src/node_process_object.cc index 3e0bac6d2397f1..c8a2c26690acf5 100644 --- a/src/node_process_object.cc +++ b/src/node_process_object.cc @@ -151,18 +151,6 @@ MaybeLocal CreateProcessObject( ToV8Value(env->context(), exec_args) .ToLocalChecked()).FromJust(); - Local env_var_proxy; - if (!CreateEnvVarProxy(context, isolate, env->as_callback_data()) - .ToLocal(&env_var_proxy)) - return MaybeLocal(); - - // process.env - process - ->Set(env->context(), - FIXED_ONE_BYTE_STRING(env->isolate(), "env"), - env_var_proxy) - .FromJust(); - READONLY_PROPERTY(process, "pid", Integer::New(env->isolate(), uv_os_getpid()));