Missing ENOMEM in realloc_check wrapper (bug 27870)
Checks
Commit Message
When MALLOC_CHECK_ is non-zero, the realloc hook missed to set errno to
ENOMEM when called with too big size. Run the test tst-malloc-too-large
also with MALLOC_CHECK_=3 to catch that.
---
malloc/Makefile | 2 +-
malloc/hooks.c | 5 ++++-
2 files changed, 5 insertions(+), 2 deletions(-)
Comments
Andreas Schwab <schwab@linux-m68k.org> writes:
> When MALLOC_CHECK_ is non-zero, the realloc hook missed to set errno to
> ENOMEM when called with too big size. Run the test tst-malloc-too-large
> also with MALLOC_CHECK_=3 to catch that.
LGTM.
Reviewed-by: DJ Delorie <dj@redhat.com>
@@ -72,7 +72,7 @@ test-srcs = tst-mtrace
# with MALLOC_CHECK_=3 because they expect a specific failure.
tests-exclude-mcheck = tst-mcheck tst-malloc-usable \
tst-interpose-nothread tst-interpose-static-nothread \
- tst-interpose-static-thread tst-malloc-too-large \
+ tst-interpose-static-thread \
tst-mxfast tst-safe-linking
# Run all tests with MALLOC_CHECK_=3
@@ -321,7 +321,10 @@ realloc_check (void *oldmem, size_t bytes, const void *caller)
const INTERNAL_SIZE_T oldsize = chunksize (oldp);
if (!checked_request2size (rb, &chnb))
- goto invert;
+ {
+ __set_errno (ENOMEM);
+ goto invert;
+ }
__libc_lock_lock (main_arena.mutex);