[PATCH] Fix malloc double free check

Jakub Jelinek jakub@redhat.com
Fri Sep 10 19:49:00 GMT 2004


Hi!

This patch fixes glibc build on ia64.

2004-09-10  Jakub Jelinek  <jakub@redhat.com>

	* malloc/malloc.c (_int_free): Only do arena boundary check for
	contiguous arenas.

--- libc/malloc/malloc.c	10 Sep 2004 10:30:43 -0000
+++ libc/malloc/malloc.c	10 Sep 2004 11:13:24 -0000
@@ -4229,8 +4229,9 @@ _int_free(mstate av, Void_t* mem)
       if (__builtin_expect (p == av->top, 0))
 	goto double_free;
       /* Or whether the next chunk is beyond the boundaries of the arena.  */
-      if (__builtin_expect ((char *) nextchunk >= ((char *) av->top
-						   + chunksize(av->top)), 0))
+      if (__builtin_expect (contiguous (av)
+			    && (char *) nextchunk
+			       >= ((char *) av->top + chunksize(av->top)), 0))
 	goto double_free;
       /* Or whether the block is actually not marked used.  */
       if (__builtin_expect (!prev_inuse(nextchunk), 0))

	Jakub



More information about the Libc-hacker mailing list