[binutils-gdb] readelf memory leak in process_mips_specific
Alan Modra
amodra@sourceware.org
Tue Mar 24 02:50:25 GMT 2020
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=5a814d6d96bc6426ae1fa8b0d1561ad081deb159
commit 5a814d6d96bc6426ae1fa8b0d1561ad081deb159
Author: Alan Modra <amodra@gmail.com>
Date: Tue Mar 24 12:12:24 2020 +1030
readelf memory leak in process_mips_specific
* readelf.c (process_mips_specific): Free iconf on error path.
Diff:
---
binutils/ChangeLog | 4 ++++
binutils/readelf.c | 10 ++++++++--
2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index bad19ea8b29..11be80dfc30 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,7 @@
+2020-03-24 Alan Modra <amodra@gmail.com>
+
+ * readelf.c (process_mips_specific): Free iconf on error path.
+
2020-03-23 Nick Clifton <nickc@redhat.com>
PR 25714
diff --git a/binutils/readelf.c b/binutils/readelf.c
index 61f06176835..1f0f49222fd 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -17074,7 +17074,10 @@ process_mips_specific (Filedata * filedata)
get_data (NULL, filedata, conflicts_offset,
sizeof (*econf32), conflictsno, _("conflict"));
if (!econf32)
- return FALSE;
+ {
+ free (iconf);
+ return FALSE;
+ }
for (cnt = 0; cnt < conflictsno; ++cnt)
iconf[cnt] = BYTE_GET (econf32[cnt]);
@@ -17089,7 +17092,10 @@ process_mips_specific (Filedata * filedata)
get_data (NULL, filedata, conflicts_offset,
sizeof (*econf64), conflictsno, _("conflict"));
if (!econf64)
- return FALSE;
+ {
+ free (iconf);
+ return FALSE;
+ }
for (cnt = 0; cnt < conflictsno; ++cnt)
iconf[cnt] = BYTE_GET (econf64[cnt]);
More information about the Binutils-cvs
mailing list