Fix use-after-free error when parsing a corrupt nested archive.

PR 21787
	* archive.c (bfd_generic_archive_p): If the bfd does not have the
	correct magic bytes at the start, set the error to wrong format
	and clear the format selector before returning NULL.
This commit is contained in:
Nick Clifton 2017-07-19 14:49:12 +01:00
parent 62a5222fda
commit 909e4e716c
2 changed files with 13 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2017-07-19 Nick Clifton <nickc@redhat.com>
PR 21787
* archive.c (bfd_generic_archive_p): If the bfd does not have the
correct magic bytes at the start, set the error to wrong format
and clear the format selector before returning NULL.
2017-07-19 Nick Clifton <nickc@redhat.com>
PR 21786

View File

@ -834,7 +834,12 @@ bfd_generic_archive_p (bfd *abfd)
if (strncmp (armag, ARMAG, SARMAG) != 0
&& strncmp (armag, ARMAGB, SARMAG) != 0
&& ! bfd_is_thin_archive (abfd))
return NULL;
{
bfd_set_error (bfd_error_wrong_format);
if (abfd->format == bfd_archive)
abfd->format = bfd_unknown;
return NULL;
}
tdata_hold = bfd_ardata (abfd);