From df10aff2acaf962050d5acb688cf998df11ff8c0 Mon Sep 17 00:00:00 2001 From: David Evans Date: Fri, 10 Jul 2026 23:53:14 +0100 Subject: [PATCH] permission: add unique warning codes Adds unique warning codes of the form PERM0000 for all permissions related SecurityWarnings, so that they can be individually silenced if required. Fixes: https://github.com/nodejs/node/issues/59818 Signed-off-by: David Evans --- lib/internal/process/pre_execution.js | 20 +++++++++---------- .../parallel/test-permission-warning-flags.js | 2 +- 2 files changed, 10 insertions(+), 12 deletions(-) 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); }