This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
PATCH: PR ld/17713: 64-bit linker fails("Segment Fault") call libbfd
- From: "H.J. Lu" <hongjiu dot lu at intel dot com>
- To: binutils at sourceware dot org
- Date: Mon, 15 Dec 2014 08:29:17 -0800
- Subject: PATCH: PR ld/17713: 64-bit linker fails("Segment Fault") call libbfd
- Authentication-results: sourceware.org; auth=none
- Reply-to: "H.J. Lu" <hjl dot tools at gmail dot com>
Hi,
I am checking this patch into master and 2.25 branch to check corrupt
input.
H.J.
---
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 23e4ba5..561c603 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2014-12-15 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/17713
+ * elflink.c (_bfd_elf_gc_mark_rsec): Check corrupt input.
+
2014-12-13 H.J. Lu <hongjiu.lu@intel.com>
PR ld/17689
diff --git a/bfd/elflink.c b/bfd/elflink.c
index 2da6d1b..b701fa0 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -11860,6 +11860,12 @@ _bfd_elf_gc_mark_rsec (struct bfd_link_info *info, asection *sec,
|| ELF_ST_BIND (cookie->locsyms[r_symndx].st_info) != STB_LOCAL)
{
h = cookie->sym_hashes[r_symndx - cookie->extsymoff];
+ if (h == NULL)
+ {
+ info->callbacks->einfo (_("%F%P: corrupt input: %B\n"),
+ sec->owner);
+ return NULL;
+ }
while (h->root.type == bfd_link_hash_indirect
|| h->root.type == bfd_link_hash_warning)
h = (struct elf_link_hash_entry *) h->root.u.i.link;