35 lines
1.0 KiB
Diff
35 lines
1.0 KiB
Diff
|
|
From 1bd6175ae79099173c1510d209ad9978129e22c0 Mon Sep 17 00:00:00 2001
|
||
|
|
From: Alan Modra <amodra@gmail.com>
|
||
|
|
Date: Sat, 14 Mar 2020 18:58:11 +1030
|
||
|
|
Subject: [PATCH] Re: asan: more readelf leaks
|
||
|
|
|
||
|
|
In git commit fd486f32d15e I put some static variables used by
|
||
|
|
get_symbol_for_build_attribute in a file scope ba_cache struct. This
|
||
|
|
was to prevent leaks in get_symbol_for_build_attribute, and to tidy up
|
||
|
|
before readelf exited. The patch wasn't quite right though. When
|
||
|
|
readelf processes more than one file it was possible to double free
|
||
|
|
arrays allocated in get_symbol_for_build_attribute.
|
||
|
|
|
||
|
|
* readelf.c (process_file): Clean ba_cache.
|
||
|
|
---
|
||
|
|
binutils/readelf.c | 2 ++
|
||
|
|
1 files changed, 2 insertions(+)
|
||
|
|
|
||
|
|
diff --git a/binutils/readelf.c b/binutils/readelf.c
|
||
|
|
index 0f8a080..49eb20f 100644
|
||
|
|
--- a/binutils/readelf.c
|
||
|
|
+++ b/binutils/readelf.c
|
||
|
|
@@ -20571,7 +20571,9 @@ process_file (char * file_name)
|
||
|
|
free (filedata);
|
||
|
|
|
||
|
|
free (ba_cache.strtab);
|
||
|
|
+ ba_cache.strtab = NULL;
|
||
|
|
free (ba_cache.symtab);
|
||
|
|
+ ba_cache.symtab = NULL;
|
||
|
|
ba_cache.filedata = NULL;
|
||
|
|
|
||
|
|
return ret;
|
||
|
|
--
|
||
|
|
1.8.3.1
|
||
|
|
|