diff options
author | Alan Modra <amodra@gmail.com> | 2022-08-13 14:05:24 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2022-08-13 14:11:27 +0930 |
commit | 8c68d88cc44ec476125e30835f79865e8eb32358 (patch) | |
tree | cdc81622e36141fc7384a3bb395a1c739a4fc5aa | |
parent | cc44342012efbc20421fa91abd1f0c3000a2241a (diff) | |
download | gdb-8c68d88cc44ec476125e30835f79865e8eb32358.zip gdb-8c68d88cc44ec476125e30835f79865e8eb32358.tar.gz gdb-8c68d88cc44ec476125e30835f79865e8eb32358.tar.bz2 |
asan: NULL dereference in som_set_reloc_info
* som.c (som_set_reloc_info): Ignore non-existent previous
fixup references.
-rw-r--r-- | bfd/som.c | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -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; |