mirror of
https://github.com/nodejs/node.git
synced 2025-04-30 23:56:58 +00:00
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>
This commit is contained in:
parent
6a07eca49c
commit
1cc1ca4297
@ -539,13 +539,15 @@ function toUnixTimestamp(time, name = 'time') {
|
|||||||
|
|
||||||
const validateOffsetLengthRead = hideStackFrames(
|
const validateOffsetLengthRead = hideStackFrames(
|
||||||
(offset, length, bufferLength) => {
|
(offset, length, bufferLength) => {
|
||||||
if (offset < 0 || offset >= bufferLength) {
|
if (offset < 0) {
|
||||||
throw new ERR_OUT_OF_RANGE('offset',
|
throw new ERR_OUT_OF_RANGE('offset', '>= 0', offset);
|
||||||
`>= 0 && <= ${bufferLength}`, 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',
|
throw new ERR_OUT_OF_RANGE('length',
|
||||||
`>= 0 && <= ${bufferLength - offset}`, length);
|
`<= ${bufferLength - offset}`, length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -44,7 +44,7 @@ assert.throws(() => {
|
|||||||
}, {
|
}, {
|
||||||
code: 'ERR_OUT_OF_RANGE',
|
code: 'ERR_OUT_OF_RANGE',
|
||||||
name: 'RangeError',
|
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'
|
'Received -1'
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -73,7 +73,7 @@ assert.throws(() => {
|
|||||||
code: 'ERR_OUT_OF_RANGE',
|
code: 'ERR_OUT_OF_RANGE',
|
||||||
name: 'RangeError',
|
name: 'RangeError',
|
||||||
message: 'The value of "length" is out of range. ' +
|
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',
|
code: 'ERR_OUT_OF_RANGE',
|
||||||
name: 'RangeError',
|
name: 'RangeError',
|
||||||
message: 'The value of "offset" is out of range. ' +
|
message: 'The value of "offset" is out of range. ' +
|
||||||
'It must be >= 0 && <= 4. Received -1'
|
'It must be >= 0. Received -1'
|
||||||
});
|
});
|
||||||
|
|
||||||
assert.throws(() => {
|
assert.throws(() => {
|
||||||
@ -136,5 +136,18 @@ assert.throws(() => {
|
|||||||
code: 'ERR_OUT_OF_RANGE',
|
code: 'ERR_OUT_OF_RANGE',
|
||||||
name: 'RangeError',
|
name: 'RangeError',
|
||||||
message: 'The value of "length" is out of range. ' +
|
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'
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user