]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gdb segv in elfread.c:elf_rel_plt_read
authorAlan Modra <amodra@gmail.com>
Thu, 3 Oct 2024 22:17:05 +0000 (07:47 +0930)
committerAlan Modra <amodra@gmail.com>
Fri, 4 Oct 2024 12:46:49 +0000 (22:16 +0930)
After commit 68bbe1183379, ELF symbols read via bfd_canonicalize_symtab
and similar functions which have bad st_name fields will have NULL in
the name rather than "(null)".  gdb.base/bfd-errors.exp deliberately
creates a faulty shared library with st_name pointing outside of
.dynsym for some symbols, and thus now results in NULL symbol names.
This triggers a segv on string_buffer.assign(name).  Fix that.

gdb/elfread.c

index e959d3a2f9d3ad10d6cf694de1bdc929fa77c7b4..2e68b0dba1afc3842503567d6c391d865669539b 100644 (file)
@@ -612,6 +612,8 @@ elf_rel_plt_read (minimal_symbol_reader &reader,
       const size_t got_suffix_len = strlen (SYMBOL_GOT_PLT_SUFFIX);
 
       name = bfd_asymbol_name (*relplt->relocation[reloc].sym_ptr_ptr);
+      if (!name)
+       continue;
       address = relplt->relocation[reloc].address;
 
       asection *msym_section;