diff --git a/lib/internal/process/pre_execution.js b/lib/internal/process/pre_execution.js index 38ea6675928ad8..b81dc423b52068 100644 --- a/lib/internal/process/pre_execution.js +++ b/lib/internal/process/pre_execution.js @@ -682,20 +682,18 @@ function initializePermission() { ObjectFreeze(require('path')); const { has, drop } = require('internal/process/permission'); const warnFlags = [ - '--allow-addons', - '--allow-child-process', - '--allow-inspector', - '--allow-wasi', - '--allow-worker', + { flag: '--allow-addons', enabled: true, code: 'PERM0001' }, + { flag: '--allow-child-process', enabled: true, code: 'PERM0002' }, + { flag: '--allow-ffi', enabled: process.config.variables.node_use_ffi, code: 'PERM0003' }, + { flag: '--allow-inspector', enabled: true, code: 'PERM0004' }, + { flag: '--allow-wasi', enabled: true, code: 'PERM0005' }, + { flag: '--allow-worker', enabled: true, code: 'PERM0006' }, ]; - if (process.config.variables.node_use_ffi) { - warnFlags.splice(2, 0, '--allow-ffi'); - } - for (const flag of warnFlags) { - if (getOptionValue(flag)) { + for (const { flag, enabled, code } of warnFlags) { + if (enabled && getOptionValue(flag)) { process.emitWarning( `The flag ${flag} must be used with extreme caution. ` + - 'It could invalidate the permission model.', 'SecurityWarning'); + 'It could invalidate the permission model.', 'SecurityWarning', code); } } const warnCommaFlags = [ diff --git a/test/parallel/test-permission-warning-flags.js b/test/parallel/test-permission-warning-flags.js index d90bdadf78771e..d6541977bda909 100644 --- a/test/parallel/test-permission-warning-flags.js +++ b/test/parallel/test-permission-warning-flags.js @@ -25,6 +25,6 @@ for (const flag of warnFlags) { ] ); - assert.match(stderr.toString(), new RegExp(`SecurityWarning: The flag ${RegExp.escape(flag)} must be used with extreme caution`)); + assert.match(stderr.toString(), new RegExp(`\\[PERM\\d{4}\\] SecurityWarning: The flag ${RegExp.escape(flag)} must be used with extreme caution`)); assert.strictEqual(status, 0); }