objdump segfault after symbol table error
authorAlan Modra <amodra@gmail.com>
Mon, 13 Mar 2023 23:55:51 +0000 (10:25 +1030)
committerAlan Modra <amodra@gmail.com>
Tue, 14 Mar 2023 01:49:28 +0000 (12:19 +1030)
This memcpy segfaults if symcount is -1 (=> syms is NULL).
      memcpy (sorted_syms, symcount ? syms : dynsyms,
      sorted_symcount * sizeof (asymbol *));

* objdump.c (slurp_symtab): Don't leave symcount as -1 after
an error.
(slurp_dynamic_symtab): Likewise for dynsymcount.

binutils/objdump.c

index 0e8e1980b809d151261089de373523daa17eb3a3..5dac13ba8688542ee75848ca803d30664d61f4bd 100644 (file)
@@ -1015,6 +1015,7 @@ slurp_symtab (bfd *abfd)
       my_bfd_nonfatal (bfd_get_filename (abfd));
       free (sy);
       sy = NULL;
+      symcount = 0;
     }
   return sy;
 }
@@ -1048,6 +1049,7 @@ slurp_dynamic_symtab (bfd *abfd)
       my_bfd_nonfatal (bfd_get_filename (abfd));
       free (sy);
       sy = NULL;
+      dynsymcount = 0;
     }
   return sy;
 }