From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2138) id 828E03853809; Mon, 17 May 2021 19:40:48 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 828E03853809 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Andreas Schwab To: glibc-cvs@sourceware.org Subject: [glibc] Missing ENOMEM in realloc_check wrapper (bug 27870) X-Act-Checkin: glibc X-Git-Author: Andreas Schwab X-Git-Refname: refs/heads/master X-Git-Oldrev: f4605e611a93891b1fdf8d0f48b3fba0d572f1ad X-Git-Newrev: c6b6b4f2c7ff62abf5da617bff9d8080631993c0 Message-Id: <20210517194048.828E03853809@sourceware.org> Date: Mon, 17 May 2021 19:40:48 +0000 (GMT) X-BeenThere: glibc-cvs@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Glibc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 May 2021 19:40:48 -0000 https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=c6b6b4f2c7ff62abf5da617bff9d8080631993c0 commit c6b6b4f2c7ff62abf5da617bff9d8080631993c0 Author: Andreas Schwab Date: Mon May 17 14:00:19 2021 +0200 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: --- malloc/Makefile | 2 +- malloc/hooks.c | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/malloc/Makefile b/malloc/Makefile index afcd296ef6..857e2ebbd9 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 c91f9502ba..8080c3f40e 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);