From: Nick Clifton Date: Wed, 19 Jul 2017 13:49:12 +0000 (+0100) Subject: Fix use-after-free error when parsing a corrupt nested archive. X-Git-Tag: hjl/gpoff-backup~191 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=909e4e716c4d77e33357bbe9bc902bfaf2e1af24;p=thirdparty%2Fbinutils-gdb.git 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. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index b8837588d11..cc7f45c8cd3 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2017-07-19 Nick Clifton + + 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 PR 21786 diff --git a/bfd/archive.c b/bfd/archive.c index f209babe149..885bf489c02 100644 --- a/bfd/archive.c +++ b/bfd/archive.c @@ -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);