diff options
-rw-r--r-- | bfd/ChangeLog | 4 | ||||
-rw-r--r-- | bfd/elf.c | 6 |
2 files changed, 8 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index f7ef5e1..945cb68 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,7 @@ +2017-06-25 Sergei Trofimovich <slyfox@gentoo.org> + + * elf.c (find_link): Bounds check "hint". + 2017-06-24 Thomas Preud'homme <thomas.preudhomme@arm.com> * elf32-arm.c (using_thumb_only): Update list of architectures in @@ -1283,7 +1283,8 @@ section_match (const Elf_Internal_Shdr * a, to be the correct section. */ static unsigned int -find_link (const bfd * obfd, const Elf_Internal_Shdr * iheader, const unsigned int hint) +find_link (const bfd *obfd, const Elf_Internal_Shdr *iheader, + const unsigned int hint) { Elf_Internal_Shdr ** oheaders = elf_elfsections (obfd); unsigned int i; @@ -1291,7 +1292,8 @@ find_link (const bfd * obfd, const Elf_Internal_Shdr * iheader, const unsigned i BFD_ASSERT (iheader != NULL); /* See PR 20922 for a reproducer of the NULL test. */ - if (oheaders[hint] != NULL + if (hint < elf_numsections (obfd) + && oheaders[hint] != NULL && section_match (oheaders[hint], iheader)) return hint; |