BUG/MINOR: activity: use the new pointer to calculate the new size in realloc()

When memory profiling is enabled, realloc() can occasionally get the area
size wrong due to the wrong pointer being used to check the new size. When
the old area gets unmapped in the operation, this may even result in a
crash. There's no impact without memory profiling though.

No backport is needed as this is exclusively 2.4-dev.
This commit is contained in:
Willy Tarreau 2021-05-07 08:01:35 +02:00
parent 0b7c78aa05
commit 2639e2edc2

View File

@ -276,7 +276,7 @@ void *realloc(void *ptr, size_t size)
size_before = malloc_usable_size(ptr);
ret = memprof_realloc_handler(ptr, size);
size = malloc_usable_size(ptr);
size = malloc_usable_size(ret);
bin = memprof_get_bin(__builtin_return_address(0));
if (size > size_before) {