Skip to content

Backport 9815 & 10161 to v6.x

Backport of #9815 & #10161


As per ecma-262 2015's #sec-%typedarray%-buffer-byteoffset-length, offset would be an integer, not a 32 bit unsigned integer. Also, length would be an integer with the maximum value of 2^53 - 1, not a 32 bit unsigned integer.

This would be a problem because, if we create a buffer from an arraybuffer, from an offset which is greater than 2^32, it would be actually pointing to a different location in arraybuffer. For example, if we use 2^40 as offset, then the actual value used will be 0, because byteOffset >>>= 0 will convert byteOffset to a 32 bit unsigned int, which is based on 2^32 modulo.

This is a redo, as the ca37fa52 broke CI.

Refer: #9814 Refer: #9492

PR-URL: #9815

Reviewed-By: Michaël Zasso targos@protonmail.com Reviewed-By: Trevor Norris trev.norris@gmail.com Reviewed-By: James M Snell jasnell@gmail.com Reviewed-By: Colin Ihrig cjihrig@gmail.com Reviewed-By: Matteo Collina matteo.collina@gmail.com

Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • tests and/or benchmarks are included
  • commit message follows commit guidelines
Affected core subsystem(s)

buffer


CI Run: https://ci.nodejs.org/job/node-test-pull-request/6221/

Merge request reports

Loading