sysmalloc: Initialize previous size field of mmaped chunks
Commit Message
With different encodings of the header, the previous zero initialization
may be insufficient and produce an invalid encoding.
2016-10-27 Florian Weimer <fweimer@redhat.com>
* malloc/malloc.c (sysmalloc): Initialize previous size field of
mmaped chunks.
Comments
On 10/28/2016 09:04 AM, Florian Weimer wrote:
> With different encodings of the header, the previous zero initialization
> may be insufficient and produce an invalid encoding.
>
> 2016-10-27 Florian Weimer <fweimer@redhat.com>
>
> * malloc/malloc.c (sysmalloc): Initialize previous size field of
> mmaped chunks.
>
> diff --git a/malloc/malloc.c b/malloc/malloc.c
> index 186e174..72d22bd 100644
> --- a/malloc/malloc.c
> +++ b/malloc/malloc.c
> @@ -2306,6 +2306,7 @@ sysmalloc (INTERNAL_SIZE_T nb, mstate av)
> else
> {
> p = (mchunkptr) mm;
> + set_prev_size (p, 0);
> set_head (p, size | IS_MMAPPED);
> }
>
Agreed. This looks good to me, and paves the way for the header
encodings to be non-zero.
@@ -2306,6 +2306,7 @@ sysmalloc (INTERNAL_SIZE_T nb, mstate av)
else
{
p = (mchunkptr) mm;
+ set_prev_size (p, 0);
set_head (p, size | IS_MMAPPED);
}