PowerPC64 offset check should test entire 64-bit value is in section

PR binutils/17512
	* elf64-ppc.c (opd_entry_value): Tighten offset check.  Remove
	now redundant assert.
This commit is contained in:
Alan Modra 2015-02-13 10:16:16 +10:30
parent fc4c425de7
commit 451dfd3843
2 changed files with 7 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2015-02-13 Alan Modra <amodra@gmail.com>
PR binutils/17512
* elf64-ppc.c (opd_entry_value): Tighten offset check. Remove
now redundant assert.
2015-02-12 Nick Clifton <nickc@redhat.com>
PR binutils/17512

View File

@ -5952,7 +5952,7 @@ opd_entry_value (asection *opd_sec,
}
/* PR 17512: file: 64b9dfbb. */
if (offset > bfd_section_size (opd_bfd, opd_sec))
if (offset + 7 >= opd_sec->size || offset + 7 < offset)
return (bfd_vma) -1;
val = bfd_get_64 (opd_bfd, contents + offset);
@ -5996,7 +5996,6 @@ opd_entry_value (asection *opd_sec,
/* Go find the opd reloc at the sym address. */
lo = relocs;
BFD_ASSERT (lo != NULL);
hi = lo + opd_sec->reloc_count - 1; /* ignore last reloc */
val = (bfd_vma) -1;
while (lo < hi)