X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=bfd%2Felfcode.h;h=625ae993df6a609ae982a788d1e7e3849f747e10;hb=84e098cdea4eb6a5ddc525a2145ffe66475fa2af;hp=5180f79a74dfea8aab803e6c9d70429c146bedab;hpb=890f750a3b053532a4b839a2dd6243076de12031;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/elfcode.h b/bfd/elfcode.h index 5180f79a74..625ae993df 100644 --- a/bfd/elfcode.h +++ b/bfd/elfcode.h @@ -749,11 +749,7 @@ elf_object_p (bfd *abfd) != 0)) abfd->flags &= ~D_PAGED; } - } - /* A further sanity check. */ - if (i_ehdrp->e_shnum != 0) - { if (i_ehdrp->e_shstrndx >= elf_numsections (abfd) || i_shdrp[i_ehdrp->e_shstrndx].sh_type != SHT_STRTAB) { @@ -1656,6 +1652,7 @@ NAME(_bfd_elf,bfd_from_remote_memory) bfd_vma high_offset; bfd_vma shdr_end; bfd_vma loadbase; + char *filename; /* Read in the ELF header in external format. */ err = target_read_memory (ehdr_vma, (bfd_byte *) &x_ehdr, sizeof x_ehdr); @@ -1863,14 +1860,22 @@ NAME(_bfd_elf,bfd_from_remote_memory) free (contents); return NULL; } + filename = bfd_strdup (""); + if (filename == NULL) + { + free (bim); + free (contents); + return NULL; + } nbfd = _bfd_new_bfd (); if (nbfd == NULL) { + free (filename); free (bim); free (contents); return NULL; } - nbfd->filename = xstrdup (""); + nbfd->filename = filename; nbfd->xvec = templ->xvec; bim->size = high_offset; bim->buffer = contents;