diff --git a/lib/internal/bootstrap/switches/does_own_process_state.js b/lib/internal/bootstrap/switches/does_own_process_state.js index 370da66a825f..5019a8ff2ee3 100644 --- a/lib/internal/bootstrap/switches/does_own_process_state.js +++ b/lib/internal/bootstrap/switches/does_own_process_state.js @@ -32,7 +32,7 @@ if (credentials.implementsPosixCredentials) { const { parseFileMode, validateArray, - validateString, + validateStringWithoutNullBytes, validateUint32, } = require('internal/validators'); @@ -124,7 +124,7 @@ if (isBuildingSnapshot()) { } function wrappedChdir(directory) { - validateString(directory, 'directory'); + validateStringWithoutNullBytes(directory, 'directory'); rawMethods.chdir(directory); // Mark cache that it requires an update. cachedCwd = ''; diff --git a/test/parallel/test-process-chdir.js b/test/parallel/test-process-chdir.js index 42d2a60c8ec6..ed11665998e4 100644 --- a/test/parallel/test-process-chdir.js +++ b/test/parallel/test-process-chdir.js @@ -44,3 +44,9 @@ const err = { }; assert.throws(function() { process.chdir({}); }, err); assert.throws(function() { process.chdir(); }, err); + +assert.throws(() => process.chdir(`${dir}\u0000ignored`), { + code: 'ERR_INVALID_ARG_VALUE', + name: 'TypeError', + message: /The argument 'directory' must be a string without null bytes/, +});