Skip to content

Commit 86378a7

Browse files
authored
Disable freezing V8 flags on initialization (#141)
Node still changes flags after initializationg; either because tests need to set their own flags (which V8 tests also still allow), or because it's explicitly requested via the "v8.setFlagsFromString" method that Node provides.
1 parent f384fca commit 86378a7

File tree

3 files changed

+12
-0
lines changed

3 files changed

+12
-0
lines changed

src/node.cc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -910,6 +910,11 @@ int InitializeNodeWithArgs(std::vector<std::string>* argv,
910910
// used in diagnostic reports.
911911
per_process::cli_options->cmdline = *argv;
912912

913+
// Node provides a "v8.setFlagsFromString" method to dynamically change flags.
914+
// Hence do not freeze flags when initializing V8. In a browser setting, this
915+
// is security relevant, for Node it's less important.
916+
V8::SetFlagsFromString("--no-freeze-flags-after-init");
917+
913918
#if defined(NODE_V8_OPTIONS)
914919
// Should come before the call to V8::SetFlagsFromCommandLine()
915920
// so the user can disable a flag --foo at run-time by passing

test/cctest/node_test_fixture.cc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ void NodeTestEnvironment::SetUp() {
2424
#endif
2525
cppgc::InitializeProcess(
2626
NodeZeroIsolateTestFixture::platform->GetPageAllocator());
27+
28+
// Before initializing V8, disable the --freeze-flags-after-init flag, so
29+
// individual tests can set their own flags.
30+
v8::V8::SetFlagsFromString("--no-freeze-flags-after-init");
31+
2732
v8::V8::Initialize();
2833
}
2934

tools/code_cache/mkcodecache.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ int main(int argc, char* argv[]) {
2929

3030
v8::V8::SetFlagsFromString("--random_seed=42");
3131
v8::V8::SetFlagsFromString("--harmony-import-assertions");
32+
// Do not freeze flags so we can later reset the random seed.
33+
v8::V8::SetFlagsFromString("--no-freeze-flags-after-init");
3234

3335
if (argc < 2) {
3436
std::cerr << "Usage: " << argv[0] << " <path/to/output.cc>\n";

0 commit comments

Comments
 (0)