os: freeze signals constant

Remove the ability to mutate signals constant as doing so can lead to
unexpected behavior, notably when spawning child process.

Fixes: https://github.com/nodejs/node/issues/44749
PR-URL: https://github.com/nodejs/node/pull/61038
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Aviv Keller <me@aviv.sh>
This commit is contained in:
Xavier Stouder 2025-12-22 17:14:46 +01:00 committed by GitHub
parent 28f468a615
commit 472f586840
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 14 additions and 0 deletions

View File

@ -25,6 +25,7 @@ const {
ArrayPrototypePush,
Float64Array,
ObjectDefineProperties,
ObjectFreeze,
StringPrototypeSlice,
SymbolToPrimitive,
} = primordials;
@ -330,6 +331,8 @@ module.exports = {
machine: getMachine,
};
ObjectFreeze(constants.signals);
ObjectDefineProperties(module.exports, {
constants: {
__proto__: null,

View File

@ -0,0 +1,11 @@
'use strict';
require('../common');
const { test } = require('node:test');
const assert = require('node:assert');
const { constants } = require('node:os');
test('Verify that signals constant is immutable', () => {
assert.throws(() => constants.signals.FOOBAR = 1337, TypeError);
});