aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2000-07-21 19:56:19 +0000
committerNick Clifton <nickc@redhat.com>2000-07-21 19:56:19 +0000
commit7a3120d9a6092b9029231894f8ba1f7620fc6c87 (patch)
treeb637b8634b5cfd4d050f7e39b8b61740f356556a
parent0b5e1ab5253d534e171ee047dfa14b451c1597a3 (diff)
downloadbinutils-7a3120d9a6092b9029231894f8ba1f7620fc6c87.zip
binutils-7a3120d9a6092b9029231894f8ba1f7620fc6c87.tar.gz
binutils-7a3120d9a6092b9029231894f8ba1f7620fc6c87.tar.bz2
Detect and report corrupt relocs
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf32-mips.c7
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];