Re: PR28420, ecoff fuzzing failures
authorAlan Modra <amodra@gmail.com>
Sat, 30 Oct 2021 08:49:13 +0000 (19:19 +1030)
committerAlan Modra <amodra@gmail.com>
Sun, 31 Oct 2021 01:12:08 +0000 (11:42 +1030)
sym_ptr_ptr NULL results in segfaults.

PR 28420
* ecoff.c (ecoff_slurp_reloc_table): Don't leave sym_ptr_ptr NULL.

bfd/ecoff.c

index 7539fadbeca62fab598d532232b4cfb9f89d45c4..c660af13265d0a943ad3a7fc63757a871f6d2903 100644 (file)
@@ -1606,7 +1606,7 @@ ecoff_slurp_reloc_table (bfd *abfd,
       (*backend->swap_reloc_in) (abfd,
                                 external_relocs + i * external_reloc_size,
                                 &intern);
-      rptr->sym_ptr_ptr = NULL;
+      rptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
       rptr->addend = 0;
 
       if (intern.r_extern)
@@ -1617,9 +1617,6 @@ ecoff_slurp_reloc_table (bfd *abfd,
                  < (ecoff_data (abfd)->debug_info.symbolic_header.iextMax)))
            rptr->sym_ptr_ptr = symbols + intern.r_symndx;
        }
-      else if (intern.r_symndx == RELOC_SECTION_NONE
-              || intern.r_symndx == RELOC_SECTION_ABS)
-       rptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
       else
        {
          const char *sec_name;