Actions
Bug #22518
closedString#unpack("m") computes the buffer size with an overflowing multiplication
Bug #22518:
String#unpack("m") computes the buffer size with an overflowing multiplication
Description
(send - s + 3) * 3 / 4 overflows where long is 32-bit: an input of about 700 MB is rejected, and an input of about 1.4 GB makes it allocate a buffer too small.
# On a platform where long is 32-bit (tested with a 32-bit build, gcc -m32):
("A" * 1_450_000_000).unpack1("m").bytesize
# expected: 1087500000
# actual: [BUG] probable buffer overflow: 1087500000 for 13758178
("A" * 800_000_000).unpack1("m").bytesize
# expected: 600000000
# actual: negative string size (or size too big) (ArgumentError)
Actions