From: Alan Modra Date: Sat, 14 Mar 2020 08:28:11 +0000 (+1030) Subject: Re: asan: more readelf leaks X-Git-Tag: binutils-2_35~1513 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1bd6175ae79099173c1510d209ad9978129e22c0;hp=2ac70237d2458fb2eb5e73de6bb02a396b5bada0;p=thirdparty%2Fbinutils-gdb.git 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. --- 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;