Fix a seg-fault disassembling a corrupt binary.
authorNick Clifton <nickc@redhat.com>
Thu, 1 Dec 2016 10:49:39 +0000 (10:49 +0000)
committerNick Clifton <nickc@redhat.com>
Thu, 1 Dec 2016 10:49:39 +0000 (10:49 +0000)
PR binutils/20892
* aoutx.h (find_nearest_line): Handle the case where the function
name is empty.

bfd/ChangeLog
bfd/aoutx.h

index 8de43e032c2a07472bf1da133f2abfcfd6732ffa..f03aaeb8ed2cf4a69ef3477827bc2f4d5ba2f2c4 100644 (file)
@@ -4,6 +4,10 @@
        * aoutx.h (find_nearest_line): Handle the case where the main file
        name and the directory name are both empty.
 
+       PR binutils/20892
+       * aoutx.h (find_nearest_line): Handle the case where the function
+       name is empty.
+
 2016-11-30  Alan Modra  <amodra@gmail.com>
 
        * elf.c (get_program_header_size): Revert accidental change.
index 614da21a771b7ac34b77a844a8919443b1f5e0a8..4308679207d4b0d16892b8c1cefe94b98f050edd 100644 (file)
@@ -2830,6 +2830,12 @@ NAME (aout, find_nearest_line) (bfd *abfd,
       const char *function = func->name;
       char *colon;
 
+      if (buf == NULL)
+       {
+         /* PR binutils/20892: In a corrupt input file func can be empty.  */
+         * functionname_ptr = NULL;
+         return TRUE;
+       }
       /* The caller expects a symbol name.  We actually have a
         function name, without the leading underscore.  Put the
         underscore back in, so that the caller gets a symbol name.  */