diff options
author | Alan Modra <amodra@gmail.com> | 2020-03-14 18:58:11 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2020-03-14 20:23:52 +1030 |
commit | 1bd6175ae79099173c1510d209ad9978129e22c0 (patch) | |
tree | ff205dcc70e9b08e22c00db25bee99c0caf32724 /binutils | |
parent | 2ac70237d2458fb2eb5e73de6bb02a396b5bada0 (diff) | |
download | binutils-gdb-1bd6175ae79099173c1510d209ad9978129e22c0.tar.gz |
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.
Diffstat (limited to 'binutils')
-rw-r--r-- | binutils/ChangeLog | 4 | ||||
-rw-r--r-- | binutils/readelf.c | 2 |
2 files changed, 6 insertions, 0 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 5101b8c9912..5f8af946804 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,5 +1,9 @@ 2020-03-14 Alan Modra <amodra@gmail.com> + * readelf.c (process_file): Clean ba_cache. + +2020-03-14 Alan Modra <amodra@gmail.com> + * elfcomm.h (setup_archive): Update prototype. * elfcomm.c (setup_archive): Add file_size parameter and sanity check longnames_size. 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; |