diff options
author | Jakub Jelinek <jakub@redhat.com> | 2004-12-10 13:08:03 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2004-12-10 13:08:03 +0000 |
commit | 138f35cc73eff0f822352241172678de82934d86 (patch) | |
tree | dca68c003a012e2ec173c038ea2c97b560e83a02 /bfd/elf.c | |
parent | 3cd36e7c72e3d4b36683ff99ca763a055b0d431c (diff) | |
download | fsf-binutils-gdb-138f35cc73eff0f822352241172678de82934d86.zip fsf-binutils-gdb-138f35cc73eff0f822352241172678de82934d86.tar.gz fsf-binutils-gdb-138f35cc73eff0f822352241172678de82934d86.tar.bz2 |
* elf.c (bfd_elf_local_sym_name): Avoid crashes with invalid
st_shndx on STT_SECTION sections.
Diffstat (limited to 'bfd/elf.c')
-rw-r--r-- | bfd/elf.c | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -409,7 +409,10 @@ bfd_elf_local_sym_name (bfd *abfd, Elf_Internal_Sym *isym) { unsigned int iname = isym->st_name; unsigned int shindex = elf_tdata (abfd)->symtab_hdr.sh_link; - if (iname == 0 && ELF_ST_TYPE (isym->st_info) == STT_SECTION) + if (iname == 0 && ELF_ST_TYPE (isym->st_info) == STT_SECTION + /* Check for a bogus st_shndx to avoid crashing. */ + && isym->st_shndx < elf_numsections (abfd) + && !(isym->st_shndx >= SHN_LORESERVE && isym->st_shndx <= SHN_HIRESERVE)) { iname = elf_elfsections (abfd)[isym->st_shndx]->sh_name; shindex = elf_elfheader (abfd)->e_shstrndx; |