Fix assertion failure in linker triggered by corrupt input file.
authorNick Clifton <nickc@redhat.com>
Mon, 5 Dec 2016 12:14:22 +0000 (12:14 +0000)
committerNick Clifton <nickc@redhat.com>
Mon, 5 Dec 2016 12:14:22 +0000 (12:14 +0000)
PR ld/20925
* aoutx.h (aout_link_add_symbols): Replace BFD_ASSERT with return
FALSE.

bfd/ChangeLog
bfd/aoutx.h

index 45b8b88ab5f1b56ccc19a316db924a3593cad78c..dbb90e7007f806c93324dbca5e503f2114e2e35c 100644 (file)
@@ -1,3 +1,9 @@
+2016-12-05  Nick Clifton  <nickc@redhat.com>
+
+       PR ld/20925
+       * aoutx.h (aout_link_add_symbols): Replace BFD_ASSERT with return
+       FALSE.
+
 2016-12-03  Alan Modra  <amodra@gmail.com>
 
        * elf64-ppc.c (struct ppc_link_hash_entry): Delete "was_undefined".
index b9ac2b7f9e56051e1aa9d87bf4a12ba6e736d65d..fb7041abb3df4dae4a55cbf45f92c7ec848ab7cc 100644 (file)
@@ -3089,7 +3089,9 @@ aout_link_add_symbols (bfd *abfd, struct bfd_link_info *info)
        case N_INDR | N_EXT:
          /* An indirect symbol.  The next symbol is the symbol
             which this one really is.  */
-         BFD_ASSERT (p + 1 < pend);
+         /* See PR 20925 for a reproducer.  */
+         if (p + 1 >= pend)
+           return FALSE;
          ++p;
          /* PR 19629: Corrupt binaries can contain illegal string offsets.  */
          if (GET_WORD (abfd, p->e_strx) > obj_aout_external_string_size (abfd))