From 3624a6c15ce48e03d43983ec11d586d97ca08728 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Fri, 15 Jan 2021 16:02:52 +1030 Subject: [PATCH] PR26539, memory leak in inflate.c Like the PR15356 fix for the same leak in bfd, but for readelf.c PR 26539 * readelf.c (uncompress_section_contents): Always call inflateEnd. --- binutils/ChangeLog | 5 +++++ binutils/readelf.c | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index f099429d9b8..0e3ae10c8ac 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2021-01-15 Alan Modra + + PR 26539 + * readelf.c (uncompress_section_contents): Always call inflateEnd. + 2021-01-14 Alexandre Oliva * MAINTAINERS: Update my email address. diff --git a/binutils/readelf.c b/binutils/readelf.c index ad16b4571c9..d828d5636df 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -14221,15 +14221,15 @@ uncompress_section_contents (unsigned char ** buffer, while (strm.avail_in > 0) { if (rc != Z_OK) - goto fail; + break; strm.next_out = ((Bytef *) uncompressed_buffer + (uncompressed_size - strm.avail_out)); rc = inflate (&strm, Z_FINISH); if (rc != Z_STREAM_END) - goto fail; + break; rc = inflateReset (& strm); } - rc = inflateEnd (& strm); + rc |= inflateEnd (& strm); if (rc != Z_OK || strm.avail_out != 0) goto fail; -- 2.30.2