diff options
author | Siddhesh Poyarekar <siddhesh@sourceware.org> | 2021-10-29 14:53:55 +0530 |
---|---|---|
committer | Siddhesh Poyarekar <siddhesh@sourceware.org> | 2021-10-29 14:53:55 +0530 |
commit | 88e316b06414ee7c944cd6f8b30b07a972b78499 (patch) | |
tree | 9ce83580993906710f832135a2efdbecefc6c767 /malloc/malloc-debug.c | |
parent | 1d56fd3baeaa67405b8a1d67275b4c6eecac77b8 (diff) | |
download | glibc-88e316b06414ee7c944cd6f8b30b07a972b78499.tar glibc-88e316b06414ee7c944cd6f8b30b07a972b78499.tar.gz glibc-88e316b06414ee7c944cd6f8b30b07a972b78499.tar.bz2 glibc-88e316b06414ee7c944cd6f8b30b07a972b78499.zip |
Handle NULL input to malloc_usable_size [BZ #28506]
Hoist the NULL check for malloc_usable_size into its entry points in
malloc-debug and malloc and assume non-NULL in all callees. This fixes
BZ #28506
Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
Reviewed-by: Florian Weimer <fweimer@redhat.com>
Reviewed-by: Richard W.M. Jones <rjones@redhat.com>
Diffstat (limited to 'malloc/malloc-debug.c')
-rw-r--r-- | malloc/malloc-debug.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/malloc/malloc-debug.c b/malloc/malloc-debug.c index 9922ef5f25..3d7e6d44fd 100644 --- a/malloc/malloc-debug.c +++ b/malloc/malloc-debug.c @@ -1,5 +1,6 @@ /* Malloc debug DSO. Copyright (C) 2021 Free Software Foundation, Inc. + Copyright The GNU Toolchain Authors. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -399,17 +400,17 @@ strong_alias (__debug_calloc, calloc) size_t malloc_usable_size (void *mem) { + if (mem == NULL) + return 0; + if (__is_malloc_debug_enabled (MALLOC_MCHECK_HOOK)) return mcheck_usable_size (mem); if (__is_malloc_debug_enabled (MALLOC_CHECK_HOOK)) return malloc_check_get_size (mem); - if (mem != NULL) - { - mchunkptr p = mem2chunk (mem); - if (DUMPED_MAIN_ARENA_CHUNK (p)) - return chunksize (p) - SIZE_SZ; - } + mchunkptr p = mem2chunk (mem); + if (DUMPED_MAIN_ARENA_CHUNK (p)) + return chunksize (p) - SIZE_SZ; return musable (mem); } |