diff options
-rw-r--r-- | binutils/ChangeLog | 6 | ||||
-rw-r--r-- | binutils/readelf.c | 3 |
2 files changed, 7 insertions, 2 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 2f551f1..efc2e9e 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,9 @@ +2020-03-27 Alan Modra <amodra@gmail.com> + + * readelf.c (process_archive): Don't double free qualified_name. + Don't break out of loop with "negative" archive_file_size, just + set file offset to max. + 2020-03-25 Alan Modra <amodra@gmail.com> * readelf.c (process_archive): Prevent endless loop. diff --git a/binutils/readelf.c b/binutils/readelf.c index 9bc15e4..eb41e10 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -20461,7 +20461,6 @@ process_archive (Filedata * filedata, bfd_boolean is_thin_archive) close_file (member_filedata); free (member_file_name); - free (qualified_name); } else if (is_thin_archive) { @@ -20511,7 +20510,7 @@ process_archive (Filedata * filedata, bfd_boolean is_thin_archive) arch.next_arhdr_offset += archive_file_size; /* Stop looping with "negative" archive_file_size. */ if (arch.next_arhdr_offset < archive_file_size) - break; + arch.next_arhdr_offset = -1ul; } free (qualified_name); |