From 1bd6175ae79099173c1510d209ad9978129e22c0 Mon Sep 17 00:00:00 2001 From: Alan Modra 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/ChangeLog | 4 ++++ binutils/readelf.c | 2 ++ 2 files changed, 6 insertions(+) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 5101b8c9912..5f8af946804 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,7 @@ +2020-03-14 Alan Modra + + * readelf.c (process_file): Clean ba_cache. + 2020-03-14 Alan Modra * elfcomm.h (setup_archive): Update prototype. diff --git a/binutils/readelf.c b/binutils/readelf.c index 0f8a0809c55..49eb20f28c3 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; -- 2.39.2