aboutsummaryrefslogtreecommitdiff
path: root/bfd/vms-alpha.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2023-01-04 21:43:54 +1030
committerAlan Modra <amodra@gmail.com>2023-01-04 23:52:26 +1030
commitc093f5eeabf152730bdf9ca32cbc8e045933369c (patch)
tree33bbb20675b7f092972b246f5527b6f9c391187a /bfd/vms-alpha.c
parentefff45b40a10ab0b3bdc16c3f20cf4af3f6dea88 (diff)
downloadgdb-c093f5eeabf152730bdf9ca32cbc8e045933369c.zip
gdb-c093f5eeabf152730bdf9ca32cbc8e045933369c.tar.gz
gdb-c093f5eeabf152730bdf9ca32cbc8e045933369c.tar.bz2
asan: segv in parse_module
* vms-alpha.c (parse_module): Ignore DST__K_SRC_SETFILE data if out of range.
Diffstat (limited to 'bfd/vms-alpha.c')
-rw-r--r--bfd/vms-alpha.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/bfd/vms-alpha.c b/bfd/vms-alpha.c
index a9f8796..fd2cf50 100644
--- a/bfd/vms-alpha.c
+++ b/bfd/vms-alpha.c
@@ -4577,8 +4577,11 @@ parse_module (bfd *abfd, struct module *module, unsigned char *ptr,
case DST__K_SRC_SETFILE:
data = bfd_getl16 (src_ptr + DST_S_W_SRC_UNSWORD);
- curr_srec->sfile = data;
- curr_srec->srec = module->file_table[data].srec;
+ if ((unsigned int) data < module->file_table_count)
+ {
+ curr_srec->sfile = data;
+ curr_srec->srec = module->file_table[data].srec;
+ }
vms_debug2 ((4, "DST_S_C_SRC_SETFILE: %d\n", data));
break;