mirror of
https://github.com/pocketpy/pocketpy
synced 2026-05-06 10:13:37 +00:00
fix(msgpack): prevent integer overflow in mpack growable writer
This commit is contained in:
parent
826b6f40f9
commit
e330538130
@ -1164,10 +1164,18 @@ static void mpack_growable_writer_flush(mpack_writer_t* writer, const char* data
|
||||
(int)count, (int)mpack_writer_buffer_left(writer), (int)used, (int)size);
|
||||
|
||||
// grow to fit the data
|
||||
// TODO: this really needs to correctly test for overflow
|
||||
size_t new_size = size * 2;
|
||||
while (new_size < used + count)
|
||||
if (count > SIZE_MAX - used) {
|
||||
mpack_writer_flag_error(writer, mpack_error_memory);
|
||||
return;
|
||||
}
|
||||
size_t new_size = (size > SIZE_MAX / 2) ? SIZE_MAX : size * 2;
|
||||
while (new_size < used + count) {
|
||||
if (new_size > SIZE_MAX / 2) {
|
||||
new_size = SIZE_MAX;
|
||||
break;
|
||||
}
|
||||
new_size *= 2;
|
||||
}
|
||||
|
||||
mpack_log("flush growing buffer size from %i to %i\n", (int)size, (int)new_size);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user