Skip to content

Commit fbab5db

Browse files
daemon1024targos
authored andcommitted
fs: update validateOffsetLengthRead in utils.js
PR-URL: #32896 Fixes: #32871 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Zeyu Yang <[email protected]> Reviewed-By: Juan José Arboleda <[email protected]> Reviewed-By: Andrey Pechkurov <[email protected]>
1 parent 2991ada commit fbab5db

File tree

2 files changed

+24
-9
lines changed

2 files changed

+24
-9
lines changed

lib/internal/fs/utils.js

+7-5
Original file line numberDiff line numberDiff line change
@@ -506,13 +506,15 @@ function toUnixTimestamp(time, name = 'time') {
506506

507507
const validateOffsetLengthRead = hideStackFrames(
508508
(offset, length, bufferLength) => {
509-
if (offset < 0 || offset >= bufferLength) {
510-
throw new ERR_OUT_OF_RANGE('offset',
511-
`>= 0 && <= ${bufferLength}`, offset);
509+
if (offset < 0) {
510+
throw new ERR_OUT_OF_RANGE('offset', '>= 0', offset);
512511
}
513-
if (length < 0 || offset + length > bufferLength) {
512+
if (length < 0) {
513+
throw new ERR_OUT_OF_RANGE('length', '>= 0', length);
514+
}
515+
if (offset + length > bufferLength) {
514516
throw new ERR_OUT_OF_RANGE('length',
515-
`>= 0 && <= ${bufferLength - offset}`, length);
517+
`<= ${bufferLength - offset}`, length);
516518
}
517519
}
518520
);

test/parallel/test-fs-read-type.js

+17-4
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ assert.throws(() => {
4444
}, {
4545
code: 'ERR_OUT_OF_RANGE',
4646
name: 'RangeError',
47-
message: 'The value of "offset" is out of range. It must be >= 0 && <= 4. ' +
47+
message: 'The value of "offset" is out of range. It must be >= 0. ' +
4848
'Received -1'
4949
});
5050

@@ -59,7 +59,7 @@ assert.throws(() => {
5959
code: 'ERR_OUT_OF_RANGE',
6060
name: 'RangeError',
6161
message: 'The value of "length" is out of range. ' +
62-
'It must be >= 0 && <= 4. Received -1'
62+
'It must be >= 0. Received -1'
6363
});
6464

6565

@@ -96,7 +96,7 @@ assert.throws(() => {
9696
code: 'ERR_OUT_OF_RANGE',
9797
name: 'RangeError',
9898
message: 'The value of "offset" is out of range. ' +
99-
'It must be >= 0 && <= 4. Received -1'
99+
'It must be >= 0. Received -1'
100100
});
101101

102102
assert.throws(() => {
@@ -109,5 +109,18 @@ assert.throws(() => {
109109
code: 'ERR_OUT_OF_RANGE',
110110
name: 'RangeError',
111111
message: 'The value of "length" is out of range. ' +
112-
'It must be >= 0 && <= 4. Received -1'
112+
'It must be >= 0. Received -1'
113+
});
114+
115+
assert.throws(() => {
116+
fs.readSync(fd,
117+
Buffer.allocUnsafe(expected.length),
118+
0,
119+
expected.length + 1,
120+
0);
121+
}, {
122+
code: 'ERR_OUT_OF_RANGE',
123+
name: 'RangeError',
124+
message: 'The value of "length" is out of range. ' +
125+
'It must be <= 4. Received 5'
113126
});

0 commit comments

Comments
 (0)