diff --git a/common.gypi b/common.gypi index b2fa7874c26..2d2bc4f5d56 100644 --- a/common.gypi +++ b/common.gypi @@ -35,6 +35,10 @@ # Don't bake anything extra into the snapshot. 'v8_use_external_startup_data%': 0, + # Disable V8 untrusted code mitigations. + # See https://github.com/v8/v8/wiki/Untrusted-code-mitigations + 'v8_untrusted_code_mitigations': 'false', + # Some STL containers (e.g. std::vector) do not preserve ABI compatibility # between debug and non-debug mode. 'disable_glibcxx_debug': 1, diff --git a/test/parallel/test-v8-untrusted-code-mitigations.js b/test/parallel/test-v8-untrusted-code-mitigations.js new file mode 100644 index 00000000000..c9d89cd5a66 --- /dev/null +++ b/test/parallel/test-v8-untrusted-code-mitigations.js @@ -0,0 +1,18 @@ +'use strict'; + +require('../common'); +const assert = require('assert'); +const { execFileSync } = require('child_process'); + +// This test checks that untrusted code mitigations in V8 are disabled +// by default. + +const v8Options = execFileSync(process.execPath, ['--v8-options']).toString(); + +const untrustedFlag = v8Options.indexOf('--untrusted-code-mitigations'); +assert.notStrictEqual(untrustedFlag, -1); + +const nextFlag = v8Options.indexOf('--', untrustedFlag + 2); +const slice = v8Options.substring(untrustedFlag, nextFlag); + +assert(slice.match(/type: bool default: false/));