From: Nick Clifton Date: Fri, 21 Jul 2000 19:56:19 +0000 (+0000) Subject: Detect and report corrupt relocs X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7a3120d9a6092b9029231894f8ba1f7620fc6c87;p=binutils-gdb.git Detect and report corrupt relocs --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 09725de15c5..eee5f1ac75d 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2000-07-21 Nick Clifton + + * 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 * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Don't check diff --git a/bfd/elf32-mips.c b/bfd/elf32-mips.c index 27ae18abb98..f6a60baa56e 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];