src: fix NODE_OPTIONS parsing bug

I, uhm, might have messed up by using a `substr(start, end)`
signature when `std::string` actually uses `substr(start, len)`.
Fix that.

Fixes: https://github.com/nodejs/node/issues/22526
Refs: https://github.com/nodejs/node/pull/22392

PR-URL: https://github.com/nodejs/node/pull/22529
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
This commit is contained in:
Anna Henningsen 2018-08-26 02:34:05 +02:00
parent e9876fd4f1
commit 1c05b16c9e
No known key found for this signature in database
GPG Key ID: 9C63F3A6CD2AD8F9
2 changed files with 8 additions and 2 deletions

View File

@ -2922,7 +2922,8 @@ void Init(std::vector<std::string>* argv,
index = node_options.find(' ', index + 1);
if (index - prev_index == 1) continue;
const std::string option = node_options.substr(prev_index + 1, index);
const std::string option = node_options.substr(
prev_index + 1, index - prev_index - 1);
if (!option.empty())
env_argv.emplace_back(std::move(option));
} while (index != std::string::npos);

View File

@ -14,7 +14,9 @@ const tmpdir = require('../common/tmpdir');
tmpdir.refresh();
process.chdir(tmpdir.path);
expect(`-r ${require.resolve('../fixtures/printA.js')}`, 'A\nB\n');
const printA = require.resolve('../fixtures/printA.js');
expect(`-r ${printA}`, 'A\nB\n');
expect(`-r ${printA} -r ${printA}`, 'A\nB\n');
expect('--no-deprecation', 'B\n');
expect('--no-warnings', 'B\n');
expect('--trace-warnings', 'B\n');
@ -29,6 +31,9 @@ expect('--v8-pool-size=10', 'B\n');
expect('--trace-event-categories node', 'B\n');
// eslint-disable-next-line no-template-curly-in-string
expect('--trace-event-file-pattern {pid}-${rotation}.trace_events', 'B\n');
// eslint-disable-next-line no-template-curly-in-string
expect('--trace-event-file-pattern {pid}-${rotation}.trace_events ' +
'--trace-event-categories node.async_hooks', 'B\n');
if (!common.isWindows) {
expect('--perf-basic-prof', 'B\n');