diff options
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/elf32-mips.c | 7 |
2 files changed, 12 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 09725de..eee5f1a 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2000-07-21 Nick Clifton <nickc@cygnus.com> + + * elf32-mips.c (_bfd_mips_elf_check_relocs): Detect out of + range symbol indices in relocs and issue an error message. + 2000-07-20 H.J. Lu <hjl@gnu.org> * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Don't check diff --git a/bfd/elf32-mips.c b/bfd/elf32-mips.c index 27ae18a..f6a60ba 100644 --- a/bfd/elf32-mips.c +++ b/bfd/elf32-mips.c @@ -7593,6 +7593,13 @@ _bfd_mips_elf_check_relocs (abfd, info, sec, relocs) if (r_symndx < extsymoff) h = NULL; + else if (r_symndx >= extsymoff + (symtab_hdr->sh_size / symtab_hdr->sh_entsize)) + { + (*_bfd_error_handler) + (_("Malformed reloc detected for section %s"), name); + bfd_set_error (bfd_error_bad_value); + return false; + } else { h = sym_hashes[r_symndx - extsymoff]; |