From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1039) id E0AA7384AB40; Thu, 11 Apr 2024 02:52:05 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E0AA7384AB40 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1712803925; bh=ppdRlxCC7UrZqMchVYERDxJRpx4pbhTB3zovURdISEM=; h=From:To:Subject:Date:From; b=WjWn8q9bs5tVfZi2XLPo46fU7/vYMx51yrEgcqzuYQ72AGPF0PM0OItq83Y5/dMlT ywiG/kBQ9kDOOHMpKUXo7Qz2NA39BjPlb81KAd9EPk9twhws1FwlCwohU70jy4Ichz 6dBB/P8PAkR5SqZxQHL5d/3344yq9xXIwCA7Dh6A= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: H.J. Lu To: binutils-cvs@sourceware.org Subject: [binutils-gdb] mmap: Fix a memory leak in _bfd_mmap_read_temporary X-Act-Checkin: binutils-gdb X-Git-Author: H.J. Lu X-Git-Refname: refs/heads/master X-Git-Oldrev: c3460201a64b641e3a2089b7fca7ae17a9ddfb85 X-Git-Newrev: 533da9536e6e4d65f0623ede93365f7229779f54 Message-Id: <20240411025205.E0AA7384AB40@sourceware.org> Date: Thu, 11 Apr 2024 02:52:05 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D533da9536e6e= 4d65f0623ede93365f7229779f54 commit 533da9536e6e4d65f0623ede93365f7229779f54 Author: H.J. Lu Date: Tue Apr 9 16:02:48 2024 -0700 mmap: Fix a memory leak in _bfd_mmap_read_temporary =20 Return malloced memory in *mmap_base so that _bfd_munmap_readonly_tempo= rary will free it. =20 * libbfd.c (_bfd_mmap_read_temporary): Return malloced memory in *mmap_base. Diff: --- bfd/libbfd.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/bfd/libbfd.c b/bfd/libbfd.c index e92ed5e18a2..2f5ddcaf3b8 100644 --- a/bfd/libbfd.c +++ b/bfd/libbfd.c @@ -1223,8 +1223,12 @@ _bfd_mmap_read_temporary (void **data_p, size_t *siz= e_p, if (data =3D=3D NULL) return false; *data_p =3D data; + /* NB: _bfd_munmap_readonly_temporary will free *MMAP_BASE if + *SIZE_P =3D=3D 0. */ + *mmap_base =3D data; } - *mmap_base =3D NULL; + else + *mmap_base =3D NULL; *size_p =3D 0; return bfd_read (data, size, abfd) =3D=3D size; }