Another fix for an objdump crash when parsing a corrupt binary.
authorNick Clifton <nickc@redhat.com>
Tue, 6 Jan 2015 22:02:55 +0000 (22:02 +0000)
committerNick Clifton <nickc@redhat.com>
Tue, 6 Jan 2015 22:02:55 +0000 (22:02 +0000)
PR binutils/17512
* mach-o.c (bfd_mach_o_read_symtab_strtab): Zero terminate the
string table.

bfd/ChangeLog
bfd/mach-o.c

index 383cf299f9e5c5241588f31c2f4fc35cfa2bbebe..10ffe34e9ef425dd8ca21b01dbdd96058e9d317e 100644 (file)
@@ -1,6 +1,9 @@
 2015-01-06  Nick Clifton  <nickc@redhat.com>
 
        PR binutils/17512
+       * mach-o.c (bfd_mach_o_read_symtab_strtab): Zero terminate the
+       string table.
+
        * reloc.c (bfd_get_reloc_size): Handle a reloc size of -1.
        (bfd_perform_relocation): Include the size of the reloc in the
        test for an out of range relocation.
index 5dd6250f9d64c79ce14616f4a1d10d2bce22bae7..44b12b5047f16d803d33f003c32356d858c6208b 100644 (file)
@@ -3675,7 +3675,7 @@ bfd_mach_o_read_symtab_strtab (bfd *abfd)
     }
   else
     {
-      sym->strtab = bfd_alloc (abfd, sym->strsize);
+      sym->strtab = bfd_alloc (abfd, sym->strsize + 1);
       if (sym->strtab == NULL)
         return FALSE;
 
@@ -3688,6 +3688,8 @@ bfd_mach_o_read_symtab_strtab (bfd *abfd)
           bfd_set_error (bfd_error_file_truncated);
           return FALSE;
         }
+      /* Zero terminate the string table.  */
+      sym->strtab[sym->strsize] = 0;
     }
 
   return TRUE;