/* ELF executable support for BFD.
- Copyright (C) 1991-2015 Free Software Foundation, Inc.
+ Copyright (C) 1991-2016 Free Software Foundation, Inc.
Written by Fred Fish @ Cygnus Support, from information published
in "UNIX System V Release 4, Programmers Guide: ANSI C and
Elf_Internal_Shdr *shdrp;
unsigned int num_sec;
+#ifndef BFD64
+ if (i_ehdrp->e_shnum > ((bfd_size_type) -1) / sizeof (*i_shdrp))
+ goto got_wrong_format_error;
+#endif
amt = sizeof (*i_shdrp) * i_ehdrp->e_shnum;
i_shdrp = (Elf_Internal_Shdr *) bfd_alloc (abfd, amt);
if (!i_shdrp)
Elf_Internal_Phdr *i_phdr;
unsigned int i;
- amt = i_ehdrp->e_phnum * sizeof (Elf_Internal_Phdr);
+#ifndef BFD64
+ if (i_ehdrp->e_phnum > ((bfd_size_type) -1) / sizeof (*i_phdr))
+ goto got_wrong_format_error;
+#endif
+ amt = i_ehdrp->e_phnum * sizeof (*i_phdr);
elf_tdata (abfd)->phdr = (Elf_Internal_Phdr *) bfd_alloc (abfd, amt);
if (elf_tdata (abfd)->phdr == NULL)
goto got_no_match;
case STT_COMMON:
/* FIXME: Do we have to put the size field into the value field
as we do with symbols in SHN_COMMON sections (see above) ? */
+ sym->symbol.flags |= BSF_ELF_COMMON;
/* Fall through. */
case STT_OBJECT:
sym->symbol.flags |= BSF_OBJECT;