mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-27 05:00:15 +00:00
malloc: Fix a realloc crash with heap tagging [BZ 27468]
_int_free must be called with a chunk that has its tag reset. This was missing in a rare case that could crash when heap tagging is enabled: when in a multi-threaded process the current arena runs out of memory during realloc, but another arena still has space to finish the realloc then _int_free was called without clearing the user allocation tags. Fixes bug 27468. Reviewed-by: DJ Delorie <dj@redhat.com>
This commit is contained in:
parent
7759be2593
commit
42cc96066b
@ -3446,7 +3446,9 @@ __libc_realloc (void *oldmem, size_t bytes)
|
||||
newp = __libc_malloc (bytes);
|
||||
if (newp != NULL)
|
||||
{
|
||||
memcpy (newp, oldmem, oldsize - SIZE_SZ);
|
||||
size_t sz = CHUNK_AVAILABLE_SIZE (oldp) - CHUNK_HDR_SZ;
|
||||
memcpy (newp, oldmem, sz);
|
||||
(void) TAG_REGION (chunk2rawmem (oldp), sz);
|
||||
_int_free (ar_ptr, oldp, 0);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user