Closed
Description
Version
14.17.3
Platform
23.4.0 Darwin Kernel Version 23.4.0
Subsystem
No response
What steps will reproduce the bug?
let buffer = Buffer.alloc(2279415336);
let res = buffer.toString('utf8', 2147483648, 2147483700); // 2^32 - 1 < start
// buffer.js:605
// slice: (buf, start, end) => buf.utf8Slice(start, end),
^
// RangeError: Index out of range
How often does it reproduce? Is there a required condition?
everytime
What is the expected behavior? Why is that the expected behavior?
Buffer.toString()
should be able to handle buffers smaller than kMaxLength
.
What do you see instead?
index out of range error
Additional information
The bitwise or assignment (|=
) operation of Buffer.toString()
seems to be the cause of the error. If start or end parameter greater than INT_MAX
is passed, the value changes to a negative number, resulting in an index out of range error.