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
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
What do you see instead?
Additional information
The text was updated successfully, but these errors were encountered:
#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.
What steps will reproduce the bug?
There is an inconsistency between calling
Buffer.alloc(size, fill)
and callinglet b=Buffer.alloc(size)
andb.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 throwsERR_OUT_OF_RANGE
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
Also, if
offset
andend
are provided to fill, the same error occuresUncaught: 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
What do you see instead?
Additional information
The text was updated successfully, but these errors were encountered: