Skip to content

Commit 4c643c0

Browse files
daemon1024BethGriggs
authored andcommitted
fs: update validateOffsetLengthRead in utils.js
PR-URL: #32896 Fixes: #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>
1 parent 4ef91a6 commit 4c643c0

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
@@ -539,13 +539,15 @@ function toUnixTimestamp(time, name = 'time') {
539539

540540
const validateOffsetLengthRead = hideStackFrames(
541541
(offset, length, bufferLength) => {
542-
if (offset < 0 || offset >= bufferLength) {
543-
throw new ERR_OUT_OF_RANGE('offset',
544-
`>= 0 && <= ${bufferLength}`, offset);
542+
if (offset < 0) {
543+
throw new ERR_OUT_OF_RANGE('offset', '>= 0', offset);
545544
}
546-
if (length < 0 || offset + length > bufferLength) {
545+
if (length < 0) {
546+
throw new ERR_OUT_OF_RANGE('length', '>= 0', length);
547+
}
548+
if (offset + length > bufferLength) {
547549
throw new ERR_OUT_OF_RANGE('length',
548-
`>= 0 && <= ${bufferLength - offset}`, length);
550+
`<= ${bufferLength - offset}`, length);
549551
}
550552
}
551553
);

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

@@ -73,7 +73,7 @@ assert.throws(() => {
7373
code: 'ERR_OUT_OF_RANGE',
7474
name: 'RangeError',
7575
message: 'The value of "length" is out of range. ' +
76-
'It must be >= 0 && <= 4. Received -1'
76+
'It must be >= 0. Received -1'
7777
});
7878

7979

@@ -110,7 +110,7 @@ assert.throws(() => {
110110
code: 'ERR_OUT_OF_RANGE',
111111
name: 'RangeError',
112112
message: 'The value of "offset" is out of range. ' +
113-
'It must be >= 0 && <= 4. Received -1'
113+
'It must be >= 0. Received -1'
114114
});
115115

116116
assert.throws(() => {
@@ -136,5 +136,18 @@ assert.throws(() => {
136136
code: 'ERR_OUT_OF_RANGE',
137137
name: 'RangeError',
138138
message: 'The value of "length" is out of range. ' +
139-
'It must be >= 0 && <= 4. Received -1'
139+
'It must be >= 0. Received -1'
140+
});
141+
142+
assert.throws(() => {
143+
fs.readSync(fd,
144+
Buffer.allocUnsafe(expected.length),
145+
0,
146+
expected.length + 1,
147+
0);
148+
}, {
149+
code: 'ERR_OUT_OF_RANGE',
150+
name: 'RangeError',
151+
message: 'The value of "length" is out of range. ' +
152+
'It must be <= 4. Received 5'
140153
});

0 commit comments

Comments
 (0)