asan: NULL dereference in som_set_reloc_info

* som.c (som_set_reloc_info): Ignore non-existent previous
	fixup references.
This commit is contained in:
Alan Modra
2022-08-13 14:05:24 +09:30
parent cc44342012
commit 8c68d88cc4

View File

@ -4978,6 +4978,11 @@ som_set_reloc_info (unsigned char *fixup,
/* Handle a request for a previous fixup. */ /* Handle a request for a previous fixup. */
if (*fp->format == 'P') 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 /* Get pointer to the beginning of the prev fixup, move
the repeated fixup to the head of the queue. */ the repeated fixup to the head of the queue. */
fixup = reloc_queue[fp->D].reloc; fixup = reloc_queue[fp->D].reloc;