This patch fixes a leak of qualified_name caused by
4c83662712 and a
double free introduced by
fd486f32d1. Not breaking out of the loop
results in an error: "failed to seek to next archive header". That's
slightly better than silently preventing the possibility of endless
loops.
* 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-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.
close_file (member_filedata);
free (member_file_name);
- free (qualified_name);
}
else if (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);