On 2017 Jul 07 (Fri) at 08:52:42 +0200 (+0200), Otto Moerbeek wrote:
:I think I found it: requested size is not recorded for malloc(0),
:bp->offset is not initialized in that case. Other code is carefull not to
:use ->offset for size == 0.
:OA
:       -Otto
:
:Index: malloc.c
:===================================================================
:RCS file: /cvs/src/lib/libc/stdlib/malloc.c,v
:retrieving revision 1.226
:diff -u -p -r1.226 malloc.c
:--- malloc.c   19 Jun 2017 03:06:26 -0000      1.226
:+++ malloc.c   7 Jul 2017 06:51:30 -0000
:@@ -1013,7 +1013,7 @@ malloc_bytes(struct dir_info *d, size_t 
:       /* Adjust to the real offset of that chunk */
:       k += (lp - bp->bits) * MALLOC_BITS;
: 
:-      if (mopts.chunk_canaries)
:+      if (mopts.chunk_canaries && size > 0)
:               bp->bits[bp->offset + k] = size;
: 
:       k <<= bp->shift;
:

OK


-- 
The identical is equal to itself, since it is different.
                -- Franco Spisani

Reply via email to