]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
malloc: Change top_check return type to void
authorFlorian Weimer <fweimer@redhat.com>
Thu, 31 Aug 2017 10:02:59 +0000 (12:02 +0200)
committerFlorian Weimer <fweimer@redhat.com>
Thu, 31 Aug 2017 12:16:52 +0000 (14:16 +0200)
After commit ec2c1fcefb200c6cb7e09553f3c6af8815013d83,
(malloc: Abort on heap corruption, without a backtrace), the function
always returns 0.

ChangeLog
malloc/hooks.c
malloc/malloc.c

index 988c4024d702920ab5c9d00c59b3b8aa2377964f..c94f4c1639c49b0f08eb80c143c6e9ea8bfa3fdd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2017-08-31  Florian Weimer  <fweimer@redhat.com>
+
+       * malloc/malloc.c (top_check): Change return type to void.  Remove
+       internal_function.
+       * malloc/hooks.c (top_check): Likewise.
+       (malloc_check, realloc_check, memalign_check): Adjust.
+
 2017-08-30  Joseph Myers  <joseph@codesourcery.com>
 
        [BZ #21457]
index dcd311e7c7c42200636fab9074c33c68f013667f..4398c0a0170ae20c8b202a7c284984e6a7802b52 100644 (file)
@@ -228,8 +228,7 @@ mem2chunk_check (void *mem, unsigned char **magic_p)
 }
 
 /* Check for corruption of the top chunk.  */
-static int
-internal_function
+static void
 top_check (void)
 {
   mchunkptr t = top (&main_arena);
@@ -240,7 +239,7 @@ top_check (void)
        prev_inuse (t) &&
        (!contiguous (&main_arena) ||
         (char *) t + chunksize (t) == mp_.sbrk_base + main_arena.system_mem)))
-    return 0;
+    return;
 
   malloc_printerr ("malloc: top chunk is corrupt");
 }
@@ -257,7 +256,8 @@ malloc_check (size_t sz, const void *caller)
     }
 
   __libc_lock_lock (main_arena.mutex);
-  victim = (top_check () >= 0) ? _int_malloc (&main_arena, sz + 1) : NULL;
+  top_check ();
+  victim = _int_malloc (&main_arena, sz + 1);
   __libc_lock_unlock (main_arena.mutex);
   return mem2mem_check (victim, sz);
 }
@@ -329,8 +329,8 @@ realloc_check (void *oldmem, size_t bytes, const void *caller)
         else
           {
             /* Must alloc, copy, free. */
-            if (top_check () >= 0)
-              newmem = _int_malloc (&main_arena, bytes + 1);
+           top_check ();
+           newmem = _int_malloc (&main_arena, bytes + 1);
             if (newmem)
               {
                 memcpy (newmem, oldmem, oldsize - 2 * SIZE_SZ);
@@ -341,12 +341,10 @@ realloc_check (void *oldmem, size_t bytes, const void *caller)
     }
   else
     {
-      if (top_check () >= 0)
-        {
-          INTERNAL_SIZE_T nb;
-          checked_request2size (bytes + 1, nb);
-          newmem = _int_realloc (&main_arena, oldp, oldsize, nb);
-        }
+      top_check ();
+      INTERNAL_SIZE_T nb;
+      checked_request2size (bytes + 1, nb);
+      newmem = _int_realloc (&main_arena, oldp, oldsize, nb);
     }
 
   /* mem2chunk_check changed the magic byte in the old chunk.
@@ -396,8 +394,8 @@ memalign_check (size_t alignment, size_t bytes, const void *caller)
     }
 
   __libc_lock_lock (main_arena.mutex);
-  mem = (top_check () >= 0) ? _int_memalign (&main_arena, alignment, bytes + 1) :
-        NULL;
+  top_check ();
+  mem = _int_memalign (&main_arena, alignment, bytes + 1);
   __libc_lock_unlock (main_arena.mutex);
   return mem2mem_check (mem, bytes);
 }
index 65bbf02cb7920027365e0a9604b0775477a63ce5..768670ccf6a48cf260e72db73aef7de4e4b46878 100644 (file)
@@ -1022,7 +1022,7 @@ static void*  _mid_memalign(size_t, size_t, void *);
 static void malloc_printerr(const char *str) __attribute__ ((noreturn));
 
 static void* internal_function mem2mem_check(void *p, size_t sz);
-static int internal_function top_check(void);
+static void top_check (void);
 static void internal_function munmap_chunk(mchunkptr p);
 #if HAVE_MREMAP
 static mchunkptr internal_function mremap_chunk(mchunkptr p, size_t new_size);