From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gnu.wildebeest.org (wildebeest.demon.nl [212.238.236.112]) by sourceware.org (Postfix) with ESMTPS id 6D5F4385E83D for ; Thu, 1 Jul 2021 12:52:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 6D5F4385E83D Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=klomp.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=klomp.org Received: from tarox.wildebeest.org (83-87-18-245.cable.dynamic.v4.ziggo.nl [83.87.18.245]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by gnu.wildebeest.org (Postfix) with ESMTPSA id 4FF043000252; Thu, 1 Jul 2021 14:52:40 +0200 (CEST) Received: by tarox.wildebeest.org (Postfix, from userid 1000) id 83C86413CE02; Thu, 1 Jul 2021 14:52:38 +0200 (CEST) From: Mark Wielaard To: debugedit@sourceware.org Cc: Mark Wielaard Subject: [PATCH] debugedit: Handle realloc failure correctly. Date: Thu, 1 Jul 2021 14:52:35 +0200 Message-Id: <20210701125235.30305-1-mark@klomp.org> X-Mailer: git-send-email 2.18.4 X-Spam-Status: No, score=-10.0 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: debugedit@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: debugedit development mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 01 Jul 2021 12:52:44 -0000 Although we are already in trouble when realloc fails don't make it worse. When realloc fails we have to free the original pointer we wanted to extend to not cause an even bigger memory leak. * tools/debugedit.c (read_abbrev): Free original t after realloc fails. Signed-off-by: Mark Wielaard --- tools/debugedit.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tools/debugedit.c b/tools/debugedit.c index c6975b2..7fcaa6a 100644 --- a/tools/debugedit.c +++ b/tools/debugedit.c @@ -771,10 +771,14 @@ no_memory: { if (t->nattr == size) { + struct abbrev_tag *orig_t = t; size += 10; t = realloc (t, sizeof (*t) + size * sizeof (struct abbrev_attr)); if (t == NULL) - goto no_memory; + { + free (orig_t); + goto no_memory; + } } form = read_uleb128 (ptr); if (form == 2 -- 2.18.4