Skip to content
Permalink
Browse files

src: forbid access to CLI options before bootstrapping is done

PR-URL: #26476
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
  • Loading branch information...
joyeecheung authored and targos committed Mar 6, 2019
1 parent e6c1ad5 commit 63e7cc7694f07697b9a8540dea85a68f390bfdc3
Showing with 9 additions and 5 deletions.
  1. +3 −5 lib/internal/async_hooks.js
  2. +6 −0 src/node_options.cc
@@ -5,10 +5,6 @@ const {
ERR_INVALID_ASYNC_ID
} = require('internal/errors').codes;

const { getOptionValue } = require('internal/options');
const shouldAbortOnUncaughtException =
getOptionValue('--abort-on-uncaught-exception');

const async_wrap = internalBinding('async_wrap');
/* async_hook_fields is a Uint32Array wrapping the uint32_t array of
* Environment::AsyncHooks::fields_[]. Each index tracks the number of active
@@ -102,7 +98,9 @@ function fatalError(e) {
Error.captureStackTrace(o, fatalError);
process._rawDebug(o.stack);
}
if (shouldAbortOnUncaughtException) {

const { getOptionValue } = require('internal/options');
if (getOptionValue('--abort-on-uncaught-exception')) {
process.abort();
}
process.exit(1);
@@ -548,6 +548,12 @@ HostPort SplitHostPort(const std::string& arg,
void GetOptions(const FunctionCallbackInfo<Value>& args) {
Mutex::ScopedLock lock(per_process::cli_options_mutex);
Environment* env = Environment::GetCurrent(args);
if (!env->has_run_bootstrapping_code()) {
// No code because this is an assertion.
return env->ThrowError(
"Should not query options before bootstrapping is done");
}

Isolate* isolate = env->isolate();
Local<Context> context = env->context();

0 comments on commit 63e7cc7

Please sign in to comment.
You can’t perform that action at this time.