From: Andreas Schwab Date: Mon, 17 May 2021 12:00:19 +0000 (+0200) Subject: Missing ENOMEM in realloc_check wrapper (bug 27870) X-Git-Tag: glibc-2.34~397 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c6b6b4f2c7ff62abf5da617bff9d8080631993c0;p=thirdparty%2Fglibc.git Missing ENOMEM in realloc_check wrapper (bug 27870) 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. --- diff --git a/malloc/Makefile b/malloc/Makefile index afcd296ef6b..857e2ebbd99 100644 --- a/malloc/Makefile +++ b/malloc/Makefile @@ -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 diff --git a/malloc/hooks.c b/malloc/hooks.c index c91f9502ba8..8080c3f40ea 100644 --- a/malloc/hooks.c +++ b/malloc/hooks.c @@ -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);