From patchwork Wed Jun 7 02:01:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alan Modra X-Patchwork-Id: 104189 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp3792102vqr; Tue, 6 Jun 2023 19:02:06 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4IYLMl+V7Ib4w+XFBRG5KkFCHh32GcaJRIYSGI6GxmBEUPBa5RlbRkjCPyWoXvL/7JpIQp X-Received: by 2002:a17:907:2d2a:b0:973:a30d:b264 with SMTP id gs42-20020a1709072d2a00b00973a30db264mr3859467ejc.46.1686103326317; Tue, 06 Jun 2023 19:02:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686103326; cv=none; d=google.com; s=arc-20160816; b=IuFkjuCLXTlGL6iBPSx9YgUYmBZ8WNjoZVodpo+IbP4BhEXb56AXN3x+k9fap7i8Eb tkGq+RCR0ujWRh0X3PXmeTYNEpiKIwmE3iWJSsdaGZa4lujjWXvW77rrYXkT03oYOG5O jHbR0pU3Ydxy3aW1HbiMf6EcNKzSKtghlWFcYMnK71J8XltcsCxwHHeq/pF4KmYKePou iGlITghHWnPgCpeJ80AZFXvuKX6cZTYLM7rEGaGO9R4vyDeBCoFxwJsKTSilwOXRrwkI hVd+iFL5LzsxUMhcK6+6NHuViA2tVUpAuAHofF49rY1UIOmEoVAzQbEP6asHCOgEbEqJ 4uOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:from:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence :content-disposition:mime-version:message-id:subject:to:date :dmarc-filter:delivered-to:dkim-signature:dkim-filter; bh=JNfH7eymey5LdE5aTLFZYR/NjU4g6VBi64ody/1NFXY=; b=IqwbVxroS40YgiH6srFCPaZ3rgUYlrQFH2VyQwMc/q87eyEGOqLy3WNyD+Mt7N7eHz FaxVpCElNqtdn2Qxmo1r78gUN5uVSsansZJxnIXar3DYt32O3Dj3S55VyWPDozckABl8 jPp4jJRBYz9jGS7O1zOMzOsSpsaHgVsqhJi46jMX4ny7gVmoUDmOgFZKpAnQT+US9GiY 3Xc/Jj59xuJGsRlNenOZ6qM+eANUpIz40rnmHxeNgA/GCCm5fLh+RckxoEvDEbig3pXo jd/vvLJMoMtdwMKnwE4dZA6Zztu+98quo3rHEP47pyIc8huLj1k1i4TFwcH5pyzCawjL Bbhw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=pQu2si4O; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id g13-20020a1709067c4d00b0094f34d90a75si7401857ejp.437.2023.06.06.19.02.06 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Jun 2023 19:02:06 -0700 (PDT) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=pQu2si4O; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id CA8433857728 for ; Wed, 7 Jun 2023 02:02:03 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org CA8433857728 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1686103323; bh=JNfH7eymey5LdE5aTLFZYR/NjU4g6VBi64ody/1NFXY=; h=Date:To:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=pQu2si4OdZkB0pE5lawDC3xAFQgIWUeUNuNwRwHL+hVMyVnGvaRum17xSOuP7ZYd+ 5vaU+xLS97/Q0vdTWCrS8SPdHclJP4Qalmige0Bg28ON/a/eR6ELKPkp9QA5tHyXvx N42yHW0o3sFH7SJPNUpznbShsgO3j/u2v0xu+jGs= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-pg1-x532.google.com (mail-pg1-x532.google.com [IPv6:2607:f8b0:4864:20::532]) by sourceware.org (Postfix) with ESMTPS id 48B27385782B for ; Wed, 7 Jun 2023 02:01:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 48B27385782B Received: by mail-pg1-x532.google.com with SMTP id 41be03b00d2f7-53063897412so6297484a12.0 for ; Tue, 06 Jun 2023 19:01:55 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686103313; x=1688695313; h=content-disposition:mime-version:message-id:subject:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=JNfH7eymey5LdE5aTLFZYR/NjU4g6VBi64ody/1NFXY=; b=VLeztSVCG+qWtZ9lzt7/fHsvqDHDABF7D+gNBmGQ5JvZalUy4xxQFKIEcycxHGYI+I GI4G8hj1iS0ITyqm8bokggVDqaJo3QyR1TopVqoMIzLHuhTD2eGRv/18EZ/66UpA9eLY MXmbOr5YIaAdBNd/rmg/Q71z8P9hkQ8w9OSFwgp5pZtf02GqELv7ont7sZHOPr0iQaBJ ckk8/OQUuLgfXwyphROBibPTif/MSeda/ddgFfWvsNSGuqYzu8dki1T/c2AfgFRtBJ7o TQc1rpB5iwkgSNiZsPWsIwZWCXm/hJZ1Q5ohNrWndgbrH/pxLygKlKntKG5qWinSf41D MSiw== X-Gm-Message-State: AC+VfDz6T68k3ZEzt8UsvZO8AL8tkode4RzzFwunnyY+btGKUZ2U6Kht Z9LabjVtrJ5MCv0qGQ+LN8w8DGmh9JU= X-Received: by 2002:a17:903:27cb:b0:1b0:4cf9:4fa9 with SMTP id km11-20020a17090327cb00b001b04cf94fa9mr3509054plb.32.1686103313267; Tue, 06 Jun 2023 19:01:53 -0700 (PDT) Received: from squeak.grove.modra.org (158.106.96.58.static.exetel.com.au. [58.96.106.158]) by smtp.gmail.com with ESMTPSA id f11-20020a170902860b00b001b045c9abd2sm9138217plo.143.2023.06.06.19.01.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Jun 2023 19:01:52 -0700 (PDT) Received: by squeak.grove.modra.org (Postfix, from userid 1000) id 76C2E1142C8A; Wed, 7 Jun 2023 11:31:50 +0930 (ACST) Date: Wed, 7 Jun 2023 11:31:50 +0930 To: binutils@sourceware.org Subject: Memory leaks in bfd/vms-lib.c Message-ID: MIME-Version: 1.0 Content-Disposition: inline X-Spam-Status: No, score=-3034.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Alan Modra via Binutils From: Alan Modra Reply-To: Alan Modra Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1768007481769101391?= X-GMAIL-MSGID: =?utf-8?q?1768007481769101391?= * vms-lib.c (vms_lib_read_index): Free malloc'd memory on error return paths. (vms_write_index, _bfd_vms_lib_write_archive_contents): Likewise. diff --git a/bfd/vms-lib.c b/bfd/vms-lib.c index 907d0fa75dc..ab938768ebe 100644 --- a/bfd/vms-lib.c +++ b/bfd/vms-lib.c @@ -480,7 +480,10 @@ vms_lib_read_index (bfd *abfd, int idx, unsigned int *nbrel) the BFD's objalloc. */ csbuf = bfd_alloc (abfd, csm.nbr * sizeof (struct carsym)); if (csbuf == NULL) - return NULL; + { + free (csm.idx); + return NULL; + } memcpy (csbuf, csm.idx, csm.nbr * sizeof (struct carsym)); free (csm.idx); csm.idx = csbuf; @@ -1745,13 +1748,13 @@ vms_write_index (bfd *abfd, if (kbn_vbn != 0) { if (!vms_write_block (abfd, kbn_vbn, kbn_blk)) - return false; + goto err; } else { kbn_blk = bfd_malloc (VMS_BLOCK_SIZE); if (kbn_blk == NULL) - return false; + goto err; } *(unsigned short *)kbn_blk = 0; } @@ -1863,7 +1866,7 @@ vms_write_index (bfd *abfd, { bfd_putl16 (blk[j].len + blk[j].lastlen, rblk[j]->used); if (!vms_write_block (abfd, blk[j].vbn, rblk[j])) - return false; + goto err; } /* Reset this block. */ @@ -1956,20 +1959,30 @@ vms_write_index (bfd *abfd, /* Write this block on the disk. */ bfd_putl16 (blk[j].len + blk[j].lastlen, rblk[j]->used); if (!vms_write_block (abfd, blk[j].vbn, rblk[j])) - return false; + goto err; free (rblk[j]); + rblk[j] = NULL; } /* Write the last kbn (if any). */ if (kbn_vbn != 0) { if (!vms_write_block (abfd, kbn_vbn, kbn_blk)) - return false; + goto err; free (kbn_blk); } return true; + + err: + if (abfd != NULL) + { + for (j = 0; j < level; j++) + free (rblk[j]); + free (kbn_blk); + } + return false; } /* Append data to the data block DATA. Force write if PAD is true. */ @@ -2112,7 +2125,7 @@ _bfd_vms_lib_write_archive_contents (bfd *arch) unsigned int nbr_modules; struct lib_index *modules; unsigned int nbr_symbols; - struct lib_index *symbols; + struct lib_index *symbols = NULL; struct lib_tdata *tdata = bfd_libdata (arch); unsigned int i; file_ptr off; @@ -2173,18 +2186,18 @@ _bfd_vms_lib_write_archive_contents (bfd *arch) /* Create symbol index. */ if (!_bfd_vms_lib_build_map (nbr_modules, modules, &nbr_symbols, &symbols)) - return false; + goto err; vbn = 0; if (!vms_write_index (NULL, symbols, nbr_symbols, &vbn, NULL, is_elfidx)) - return false; + goto err; nbr_sym_iblk = vbn; /* Write modules and remember their position. */ off = (1 + nbr_mod_iblk + nbr_sym_iblk) * VMS_BLOCK_SIZE; if (bfd_seek (arch, off, SEEK_SET) != 0) - return false; + goto err; for (i = 0; i < nbr_modules; i++) { @@ -2304,10 +2317,10 @@ _bfd_vms_lib_write_archive_contents (bfd *arch) vbn = 2; if (!vms_write_index (arch, modules, nbr_modules, &vbn, &mod_idx_vbn, is_elfidx)) - return false; + goto err; if (!vms_write_index (arch, symbols, nbr_symbols, &vbn, &sym_idx_vbn, is_elfidx)) - return false; + goto err; /* Write libary header. */ { @@ -2378,13 +2391,15 @@ _bfd_vms_lib_write_archive_contents (bfd *arch) idd++; if (!vms_write_block (arch, 1, blk)) - return false; + goto err; } return true; input_err: bfd_set_input_error (current, bfd_get_error ()); + err: + free (symbols); return false; }