diff options
Diffstat (limited to 'system/binutils/CVE-2017-7614.patch')
-rw-r--r-- | system/binutils/CVE-2017-7614.patch | 84 |
1 files changed, 0 insertions, 84 deletions
diff --git a/system/binutils/CVE-2017-7614.patch b/system/binutils/CVE-2017-7614.patch deleted file mode 100644 index 5f3b550f2..000000000 --- a/system/binutils/CVE-2017-7614.patch +++ /dev/null @@ -1,84 +0,0 @@ -From ad32986fdf9da1c8748e47b8b45100398223dba8 Mon Sep 17 00:00:00 2001 -From: Nick Clifton <nickc@redhat.com> -Date: Tue, 4 Apr 2017 11:23:36 +0100 -Subject: [PATCH] Fix null pointer dereferences when using a link built with - clang. - - PR binutils/21342 - * elflink.c (_bfd_elf_define_linkage_sym): Prevent null pointer - dereference. - (bfd_elf_final_link): Only initialize the extended symbol index - section if there are extended symbol tables to list. ---- - bfd/elflink.c | 35 +++++++++++++++++++++-------------- - 2 files changed, 29 insertions(+), 14 deletions(-) - -diff --git a/bfd/elflink.c b/bfd/elflink.c -index 776357f..9bf75c8 100644 ---- a/bfd/elflink.c -+++ b/bfd/elflink.c -@@ -119,15 +119,18 @@ _bfd_elf_define_linkage_sym (bfd *abfd, - defined in shared libraries can't be overridden, because we - lose the link to the bfd which is via the symbol section. */ - h->root.type = bfd_link_hash_new; -+ bh = &h->root; - } -+ else -+ bh = NULL; - -- bh = &h->root; - bed = get_elf_backend_data (abfd); - if (!_bfd_generic_link_add_one_symbol (info, abfd, name, BSF_GLOBAL, - sec, 0, NULL, FALSE, bed->collect, - &bh)) - return NULL; - h = (struct elf_link_hash_entry *) bh; -+ BFD_ASSERT (h != NULL); - h->def_regular = 1; - h->non_elf = 0; - h->root.linker_def = 1; -@@ -12038,24 +12041,28 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info) - { - /* Finish up and write out the symbol string table (.strtab) - section. */ -- Elf_Internal_Shdr *symstrtab_hdr; -+ Elf_Internal_Shdr *symstrtab_hdr = NULL; - file_ptr off = symtab_hdr->sh_offset + symtab_hdr->sh_size; - -- symtab_shndx_hdr = & elf_symtab_shndx_list (abfd)->hdr; -- if (symtab_shndx_hdr != NULL && symtab_shndx_hdr->sh_name != 0) -+ if (elf_symtab_shndx_list (abfd)) - { -- symtab_shndx_hdr->sh_type = SHT_SYMTAB_SHNDX; -- symtab_shndx_hdr->sh_entsize = sizeof (Elf_External_Sym_Shndx); -- symtab_shndx_hdr->sh_addralign = sizeof (Elf_External_Sym_Shndx); -- amt = bfd_get_symcount (abfd) * sizeof (Elf_External_Sym_Shndx); -- symtab_shndx_hdr->sh_size = amt; -+ symtab_shndx_hdr = & elf_symtab_shndx_list (abfd)->hdr; - -- off = _bfd_elf_assign_file_position_for_section (symtab_shndx_hdr, -- off, TRUE); -+ if (symtab_shndx_hdr != NULL && symtab_shndx_hdr->sh_name != 0) -+ { -+ symtab_shndx_hdr->sh_type = SHT_SYMTAB_SHNDX; -+ symtab_shndx_hdr->sh_entsize = sizeof (Elf_External_Sym_Shndx); -+ symtab_shndx_hdr->sh_addralign = sizeof (Elf_External_Sym_Shndx); -+ amt = bfd_get_symcount (abfd) * sizeof (Elf_External_Sym_Shndx); -+ symtab_shndx_hdr->sh_size = amt; - -- if (bfd_seek (abfd, symtab_shndx_hdr->sh_offset, SEEK_SET) != 0 -- || (bfd_bwrite (flinfo.symshndxbuf, amt, abfd) != amt)) -- return FALSE; -+ off = _bfd_elf_assign_file_position_for_section (symtab_shndx_hdr, -+ off, TRUE); -+ -+ if (bfd_seek (abfd, symtab_shndx_hdr->sh_offset, SEEK_SET) != 0 -+ || (bfd_bwrite (flinfo.symshndxbuf, amt, abfd) != amt)) -+ return FALSE; -+ } - } - - symstrtab_hdr = &elf_tdata (abfd)->strtab_hdr; --- -2.9.3 - |