From 57f893699f3962fb0f89258aa48f1f61621796f3 Mon Sep 17 00:00:00 2001 From: daemon1024 Date: Fri, 17 Apr 2020 12:13:53 +0530 Subject: [PATCH 1/3] fs : update validateOffsetLengthRead in utils.js --- lib/internal/fs/utils.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/internal/fs/utils.js b/lib/internal/fs/utils.js index 763a940f6e98a7..b91eaa006c44cf 100644 --- a/lib/internal/fs/utils.js +++ b/lib/internal/fs/utils.js @@ -539,13 +539,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); } } ); From 89d477141386458048af677d0ebd04298692dd6f Mon Sep 17 00:00:00 2001 From: daemon1024 Date: Fri, 17 Apr 2020 13:25:54 +0530 Subject: [PATCH 2/3] test: modify test for fs validateOffsetLengthRead --- test/parallel/test-fs-read-type.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/parallel/test-fs-read-type.js b/test/parallel/test-fs-read-type.js index dbe036794ceb56..3da958c7627d30 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,5 @@ 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' }); From a39cbb6a80302f9ce7afe162c93ed7bade69ddc8 Mon Sep 17 00:00:00 2001 From: daemon1024 Date: Fri, 17 Apr 2020 22:20:18 +0530 Subject: [PATCH 3/3] test: addtional test for validateOffsetLengthRead --- test/parallel/test-fs-read-type.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/test/parallel/test-fs-read-type.js b/test/parallel/test-fs-read-type.js index 3da958c7627d30..0f9bdbab588661 100644 --- a/test/parallel/test-fs-read-type.js +++ b/test/parallel/test-fs-read-type.js @@ -138,3 +138,16 @@ assert.throws(() => { message: 'The value of "length" is out of range. ' + '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' +});