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:
Alan Modra 2020-06-27 12:47:45 +09:30
parent aa57a9d3b6
commit cfc16775b7
2 changed files with 14 additions and 1 deletions

View File

@ -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

View File

@ -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.