PR28420, ecoff fuzzing failures

Alan Modra amodra@gmail.com
Sun Oct 31 02:23:25 GMT 2021


sym_ptr_ptr NULL results in segfaults.

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

diff --git a/bfd/ecoff.c b/bfd/ecoff.c
index 7539fadbeca..c660af13265 100644
--- a/bfd/ecoff.c
+++ b/bfd/ecoff.c
@@ -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;

-- 
Alan Modra
Australia Development Lab, IBM


More information about the Binutils mailing list