asan: NULL dereference in som_set_reloc_info

Alan Modra amodra@gmail.com
Sat Aug 13 06:49:32 GMT 2022


	* som.c (som_set_reloc_info): Ignore non-existent previous
	fixup references.

diff --git a/bfd/som.c b/bfd/som.c
index d33ad67561a..c22f13b5a4c 100644
--- a/bfd/som.c
+++ b/bfd/som.c
@@ -4978,6 +4978,11 @@ som_set_reloc_info (unsigned char *fixup,
       /* Handle a request for a previous fixup.  */
       if (*fp->format == 'P')
 	{
+	  if (!reloc_queue[fp->D].reloc)
+	    /* The back-reference doesn't exist.  This is a broken
+	       object file, likely fuzzed.  Just ignore the fixup.  */
+	    continue;
+
 	  /* Get pointer to the beginning of the prev fixup, move
 	     the repeated fixup to the head of the queue.  */
 	  fixup = reloc_queue[fp->D].reloc;

-- 
Alan Modra
Australia Development Lab, IBM


More information about the Binutils mailing list