From e6ff33ca50c1180725dde11c84ee93fcdb4235ef Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Mon, 18 Sep 2017 13:05:25 -0700 Subject: [PATCH] Check error return from bfd_canonicalize_dynamic_reloc Since bfd_canonicalize_dynamic_reloc returns -1 on error, check it in elf_i386_get_synthetic_symtab and elf_x86_64_get_synthetic_symtab. PR ld/22148 * elf32-i386.c (elf_i386_get_synthetic_symtab): Check error return from bfd_canonicalize_dynamic_reloc. * elf64-x86-64.c (elf_x86_64_get_synthetic_symtab): Likewise. (cherry picked from commit 94670f6cf11fc29cc6db6814b38c4305d9bcac96) --- bfd/ChangeLog | 7 +++++++ bfd/elf32-i386.c | 2 ++ bfd/elf64-x86-64.c | 2 ++ 3 files changed, 11 insertions(+) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index c302aadf44e..d08844e5695 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2017-09-18 H.J. Lu + + PR ld/22148 + * elf32-i386.c (elf_i386_get_synthetic_symtab): Check error + return from bfd_canonicalize_dynamic_reloc. + * elf64-x86-64.c (elf_x86_64_get_synthetic_symtab): Likewise. + 2017-09-15 Nick Clifton 2.29.1 Release diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c index 00a63979130..5c1c3ff7907 100644 --- a/bfd/elf32-i386.c +++ b/bfd/elf32-i386.c @@ -6342,6 +6342,8 @@ elf_i386_get_synthetic_symtab (bfd *abfd, dynrelcount = bfd_canonicalize_dynamic_reloc (abfd, dynrelbuf, dynsyms); + if (dynrelcount < 0) + return -1; /* Sort the relocs by address. */ qsort (dynrelbuf, dynrelcount, sizeof (arelent *), compare_relocs); diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c index 6bc1898a966..80dd791d25c 100644 --- a/bfd/elf64-x86-64.c +++ b/bfd/elf64-x86-64.c @@ -6717,6 +6717,8 @@ elf_x86_64_get_synthetic_symtab (bfd *abfd, dynrelcount = bfd_canonicalize_dynamic_reloc (abfd, dynrelbuf, dynsyms); + if (dynrelcount < 0) + return -1; /* Sort the relocs by address. */ qsort (dynrelbuf, dynrelcount, sizeof (arelent *), compare_relocs); -- 2.47.2