You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
buffer.fill inconsistency for large (>2^31 bytes) buffers #35609
Linux 5.3.7-050307-generic #201910180652 SMP Fri Oct 18 10:56:47 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux:
Buffer:
What steps will reproduce the bug?
There is an inconsistency between calling Buffer.alloc(size, fill) and calling let b=Buffer.alloc(size) and b.fill(fill)
According to the spec size can be any integer smaller than buffer.constants.MAX_LENGTH, which on my machine is just under 4GB.
When allocating a buffer of size larger than 2^31-1 using Buffer.alloc(size, fill) it throws ERR_OUT_OF_RANGE
letb=Buffer.alloc(2200000000,1)
Uncaught: RangeError [ERR_OUT_OF_RANGE]: The value of "end" is out of range. It must be >= 0 && <= 2200000000. Received 2200000000
But when split into two lines it doesn't throw
letb=Buffer.alloc(2200000000)b.fill(1)
Also, if offset and end are provided to fill, the same error occures
letb=Buffer.alloc(2200000000)b.fill(1,0,b.length)
Uncaught: RangeError [ERR_OUT_OF_RANGE]: The value of "end" is out of range. It must be >= 0 && <= 2200000000. Received 2200000000
How often does it reproduce? Is there a required condition?
Always
What is the expected behavior?
At a minimum, to be consistent.
If buffer max size can be larger than 2^31-1, than it should be possible to fill it
#35134 already fixed this and has been released in newer versions of Node 14, so I’ll close this as there’s nothing more that can be done on our side. Updating Node.js should resolve this.
Reacted by Robert Nagy, Nikita Skovoroda and yehiyam
Activity
ronag commentedon Oct 12, 2020
@addaleax maybe?
addaleax commentedon Oct 12, 2020
#35134 already fixed this and has been released in newer versions of Node 14, so I’ll close this as there’s nothing more that can be done on our side. Updating Node.js should resolve this.