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:
parent
62a5222fda
commit
909e4e716c
2 changed files with 13 additions and 1 deletions
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue