From 6879f5a99e25c068fec34126b6b0fe4325223aa0 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Wed, 21 Jun 2017 16:36:44 +0100 Subject: [PATCH] Fix addrss violation when processing a corrupt SH COFF binary. PR binutils/21646 * coff-sh.c (sh_reloc): Check for an out of range reloc. --- bfd/ChangeLog | 5 +++++ bfd/coff-sh.c | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 35b9d97a98f..b1cf4f9c333 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2017-06-21 Nick Clifton + + PR binutils/21646 + * coff-sh.c (sh_reloc): Check for an out of range reloc. + 2017-06-21 Nick Clifton PR binutils/21639 diff --git a/bfd/coff-sh.c b/bfd/coff-sh.c index d76f98ad059..26d296baa05 100644 --- a/bfd/coff-sh.c +++ b/bfd/coff-sh.c @@ -596,6 +596,9 @@ sh_reloc (bfd * abfd, && bfd_is_und_section (symbol_in->section)) return bfd_reloc_undefined; + if (addr > input_section->size) + return bfd_reloc_outofrange; + sym_value = get_symbol_value (symbol_in); switch (r_type) @@ -2910,7 +2913,6 @@ sh_coff_get_relocated_section_contents (bfd *output_bfd, struct internal_reloc *internal_relocs = NULL; struct internal_syment *internal_syms = NULL; -fprintf (stderr, "DATA = %p\n", data); /* We only need to handle the case of relaxing, or of having a particular set of section contents, specially. */ if (relocatable -- 2.30.2