Fix integer overflow when calculating zeroing range in zeroObject

Lists can have up to 29 bits of elements. We multiply that by a constant of 8 (Bytes per word), so basically any element size can cause on overflow.
This commit is contained in:
Martin Dindoffer 2022-05-06 15:19:54 +02:00 committed by Vaci
parent 58c906f555
commit 04d0692c64

View file

@ -256,10 +256,10 @@ final class WireHelpers {
case ElementSize.TWO_BYTES:
case ElementSize.FOUR_BYTES:
case ElementSize.EIGHT_BYTES: {
memset(segment.buffer, ptr * Constants.BYTES_PER_WORD, (byte)0,
roundBitsUpToWords(
ListPointer.elementCount(tag) *
ElementSize.dataBitsPerElement(ListPointer.elementSize(tag))) * Constants.BYTES_PER_WORD);
memset(segment.buffer, ptr * Constants.BYTES_PER_WORD, (byte) 0,
roundBitsUpToWords(
(long) ListPointer.elementCount(tag) *
ElementSize.dataBitsPerElement(ListPointer.elementSize(tag))) * Constants.BYTES_PER_WORD);
break;
}
case ElementSize.POINTER: {