summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/fs.js4
-rw-r--r--test/parallel/test-fs-fchmod.js15
2 files changed, 14 insertions, 5 deletions
diff --git a/lib/fs.js b/lib/fs.js
index 6b0a88fac7..f46eabf9a0 100644
--- a/lib/fs.js
+++ b/lib/fs.js
@@ -1057,7 +1057,7 @@ fs.unlinkSync = function(path) {
};
fs.fchmod = function(fd, mode, callback) {
- validateUint32(fd, 'fd');
+ validateInt32(fd, 'fd', 0);
mode = validateAndMaskMode(mode, 'mode');
callback = makeCallback(callback);
@@ -1067,7 +1067,7 @@ fs.fchmod = function(fd, mode, callback) {
};
fs.fchmodSync = function(fd, mode) {
- validateUint32(fd, 'fd');
+ validateInt32(fd, 'fd', 0);
mode = validateAndMaskMode(mode, 'mode');
const ctx = {};
binding.fchmod(fd, mode, undefined, ctx);
diff --git a/test/parallel/test-fs-fchmod.js b/test/parallel/test-fs-fchmod.js
index df7748538a..4f6350e63c 100644
--- a/test/parallel/test-fs-fchmod.js
+++ b/test/parallel/test-fs-fchmod.js
@@ -35,12 +35,21 @@ const fs = require('fs');
const errObj = {
code: 'ERR_OUT_OF_RANGE',
name: 'RangeError [ERR_OUT_OF_RANGE]',
- message: 'The value of "fd" is out of range. It must be >= 0 && < ' +
- `${2 ** 32}. Received ${input}`
+ message: 'The value of "fd" is out of range. It must be >= 0 && <= ' +
+ `2147483647. Received ${input}`
};
assert.throws(() => fs.fchmod(input), errObj);
assert.throws(() => fs.fchmodSync(input), errObj);
- errObj.message = errObj.message.replace('fd', 'mode');
+});
+
+[-1, 2 ** 32].forEach((input) => {
+ const errObj = {
+ code: 'ERR_OUT_OF_RANGE',
+ name: 'RangeError [ERR_OUT_OF_RANGE]',
+ message: 'The value of "mode" is out of range. It must be >= 0 && < ' +
+ `4294967296. Received ${input}`
+ };
+
assert.throws(() => fs.fchmod(1, input), errObj);
assert.throws(() => fs.fchmodSync(1, input), errObj);
});