MAINT-1753: Correcting behavior of ll_aligned_realloc_16() on Linux to avoid memory corruption in the case that the new memory size requested is smaller than the old memory size. Also, adding check to ensure that the aligned malloc returns a non-null value before memcopying.

meow-7.2.2
William Todd Stinson 2012-10-18 17:36:57 -07:00
parent a7f6dcaef7
commit 11017315e6
1 changed files with 5 additions and 1 deletions

View File

@ -87,7 +87,11 @@ inline void* ll_aligned_realloc_16(void* ptr, size_t size, size_t old_size) // r
void* ret = ll_aligned_malloc_16(size);
if (ptr)
{
memcpy(ret, ptr, old_size);
if (ret)
{
// Only copy the size of the smallest memory block to avoid memory corruption.
memcpy(ret, ptr, llmin(old_size, size));
}
ll_aligned_free_16(ptr);
}
return ret;