asan: readelf: use after free in process_archive
This tidies up in cases where fuzzed thin archives hit the error return path in setup_nested_archive. * elfcomm.c (setup_nested_archive): Set nested_arch->file to NULL after freeing. (release_archive): Set fields of arch to NULL after freeing.
This commit is contained in:
parent
aa57a9d3b6
commit
cfc16775b7
@ -1,3 +1,9 @@
|
||||
2020-06-27 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* elfcomm.c (setup_nested_archive): Set nested_arch->file to NULL
|
||||
after freeing.
|
||||
(release_archive): Set fields of arch to NULL after freeing.
|
||||
|
||||
2020-06-26 Nick Alcock <nick.alcock@oracle.com>
|
||||
|
||||
* readelf.c (dump_section_as_ctf): Support .ctf archives using
|
||||
|
@ -727,7 +727,10 @@ setup_nested_archive (struct archive_info *nested_arch,
|
||||
|
||||
/* Close previous file and discard cached information. */
|
||||
if (nested_arch->file != NULL)
|
||||
fclose (nested_arch->file);
|
||||
{
|
||||
fclose (nested_arch->file);
|
||||
nested_arch->file = NULL;
|
||||
}
|
||||
release_archive (nested_arch);
|
||||
|
||||
member_file = fopen (member_file_name, "rb");
|
||||
@ -748,6 +751,10 @@ release_archive (struct archive_info * arch)
|
||||
free (arch->index_array);
|
||||
free (arch->sym_table);
|
||||
free (arch->longnames);
|
||||
arch->file_name = NULL;
|
||||
arch->index_array = NULL;
|
||||
arch->sym_table = NULL;
|
||||
arch->longnames = NULL;
|
||||
}
|
||||
|
||||
/* Get the name of an archive member from the current archive header.
|
||||
|
Loading…
Reference in New Issue
Block a user