summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordaemon1024 <barun1024@gmail.com>2020-04-17 12:13:53 +0530
committerRuben Bridgewater <ruben@bridgewater.de>2020-04-28 13:15:04 +0200
commit27837fe4f6e78b4af309365b45e4eadd196a70ab (patch)
treed9773d5a5c4b56586a8a37636bdcbf572953837f
parenta673c8fe358b1f09f0c8d652d03796ace33cef22 (diff)
downloadnode-new-27837fe4f6e78b4af309365b45e4eadd196a70ab.tar.gz
fs: update validateOffsetLengthRead in utils.js
PR-URL: https://github.com/nodejs/node/pull/32896 Fixes: https://github.com/nodejs/node/issues/32871 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Zeyu Yang <himself65@outlook.com> Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com> Reviewed-By: Andrey Pechkurov <apechkurov@gmail.com>
-rw-r--r--lib/internal/fs/utils.js12
-rw-r--r--test/parallel/test-fs-read-type.js21
2 files changed, 24 insertions, 9 deletions
diff --git a/lib/internal/fs/utils.js b/lib/internal/fs/utils.js
index bca8c618da..4575114ea0 100644
--- a/lib/internal/fs/utils.js
+++ b/lib/internal/fs/utils.js
@@ -506,13 +506,15 @@ function toUnixTimestamp(time, name = 'time') {
const validateOffsetLengthRead = hideStackFrames(
(offset, length, bufferLength) => {
- if (offset < 0 || offset >= bufferLength) {
- throw new ERR_OUT_OF_RANGE('offset',
- `>= 0 && <= ${bufferLength}`, offset);
+ if (offset < 0) {
+ throw new ERR_OUT_OF_RANGE('offset', '>= 0', offset);
}
- if (length < 0 || offset + length > bufferLength) {
+ if (length < 0) {
+ throw new ERR_OUT_OF_RANGE('length', '>= 0', length);
+ }
+ if (offset + length > bufferLength) {
throw new ERR_OUT_OF_RANGE('length',
- `>= 0 && <= ${bufferLength - offset}`, length);
+ `<= ${bufferLength - offset}`, length);
}
}
);
diff --git a/test/parallel/test-fs-read-type.js b/test/parallel/test-fs-read-type.js
index dbe036794c..0f9bdbab58 100644
--- a/test/parallel/test-fs-read-type.js
+++ b/test/parallel/test-fs-read-type.js
@@ -44,7 +44,7 @@ assert.throws(() => {
}, {
code: 'ERR_OUT_OF_RANGE',
name: 'RangeError',
- message: 'The value of "offset" is out of range. It must be >= 0 && <= 4. ' +
+ message: 'The value of "offset" is out of range. It must be >= 0. ' +
'Received -1'
});
@@ -73,7 +73,7 @@ assert.throws(() => {
code: 'ERR_OUT_OF_RANGE',
name: 'RangeError',
message: 'The value of "length" is out of range. ' +
- 'It must be >= 0 && <= 4. Received -1'
+ 'It must be >= 0. Received -1'
});
@@ -110,7 +110,7 @@ assert.throws(() => {
code: 'ERR_OUT_OF_RANGE',
name: 'RangeError',
message: 'The value of "offset" is out of range. ' +
- 'It must be >= 0 && <= 4. Received -1'
+ 'It must be >= 0. Received -1'
});
assert.throws(() => {
@@ -136,5 +136,18 @@ assert.throws(() => {
code: 'ERR_OUT_OF_RANGE',
name: 'RangeError',
message: 'The value of "length" is out of range. ' +
- 'It must be >= 0 && <= 4. Received -1'
+ 'It must be >= 0. Received -1'
+});
+
+assert.throws(() => {
+ fs.readSync(fd,
+ Buffer.allocUnsafe(expected.length),
+ 0,
+ expected.length + 1,
+ 0);
+}, {
+ code: 'ERR_OUT_OF_RANGE',
+ name: 'RangeError',
+ message: 'The value of "length" is out of range. ' +
+ 'It must be <= 4. Received 5'
});