[binutils-gdb] PR31872, Segfault in objdump (elf_slurp_reloc_table_from_section)

Alan Modra amodra@sourceware.org
Tue Jun 11 03:20:10 GMT 2024


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=b20ab53f81db7eefa0db00d14f06c04527ac324c

commit b20ab53f81db7eefa0db00d14f06c04527ac324c
Author: Alan Modra <amodra@gmail.com>
Date:   Tue Jun 11 09:22:49 2024 +0930

    PR31872, Segfault in objdump (elf_slurp_reloc_table_from_section)
    
    This one was triggered by trying to dump an AMDGPU object.
    elf64-amdgcn.c lacks support for objdump relocation handling.
    
            PR 31872
            * elfcode.h (elf_slurp_reloc_table_from_section): Don't segfault
            on NULL elf_info_to_howto_rel.

Diff:
---
 bfd/elfcode.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/bfd/elfcode.h b/bfd/elfcode.h
index 39dfe0ba234..3dcba4c4fd7 100644
--- a/bfd/elfcode.h
+++ b/bfd/elfcode.h
@@ -1614,11 +1614,11 @@ elf_slurp_reloc_table_from_section (bfd *abfd,
 
       relent->addend = rela.r_addend;
 
-      if ((entsize == sizeof (Elf_External_Rela)
-	   && ebd->elf_info_to_howto != NULL)
-	  || ebd->elf_info_to_howto_rel == NULL)
+      res = false;
+      if (entsize == sizeof (Elf_External_Rela)
+	  && ebd->elf_info_to_howto != NULL)
 	res = ebd->elf_info_to_howto (abfd, relent, &rela);
-      else
+      else if (ebd->elf_info_to_howto_rel != NULL)
 	res = ebd->elf_info_to_howto_rel (abfd, relent, &rela);
 
       if (! res || relent->howto == NULL)


More information about the Binutils-cvs mailing list