struct external_DOS_hdr hdr;
bfd_byte buffer[2];
asection *section;
- unsigned int size;
+ bfd_size_type size;
if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0
- || bfd_bread (&hdr, (bfd_size_type) sizeof (hdr), abfd) < DOS_HDR_SIZE)
+ || (size = bfd_bread (&hdr, sizeof (hdr), abfd)) < DOS_HDR_SIZE)
{
if (bfd_get_error () != bfd_error_system_call)
bfd_set_error (bfd_error_wrong_format);
e_lfanew field will be valid and point to a header beginning with one of
the relevant signatures. If not, e_lfanew might point to anything, so
don't bail if we can't read there. */
- if (H_GET_16 (abfd, hdr.e_cparhdr) < 4
- || bfd_seek (abfd, (file_ptr) H_GET_32 (abfd, hdr.e_lfanew), SEEK_SET) != 0
- || bfd_bread (buffer, (bfd_size_type) 2, abfd) != 2)
+ if (size < offsetof (struct external_DOS_hdr, e_lfanew) + 4
+ || H_GET_16 (abfd, hdr.e_cparhdr) < 4)
+ ;
+ else if (bfd_seek (abfd, H_GET_32 (abfd, hdr.e_lfanew), SEEK_SET) != 0
+ || bfd_bread (buffer, (bfd_size_type) 2, abfd) != 2)
{
if (bfd_get_error () == bfd_error_system_call)
return NULL;
size += H_GET_16 (abfd, hdr.e_cblp);
/* Check that the size is valid. */
- if (bfd_seek (abfd, (file_ptr) (section->filepos + size), SEEK_SET) != 0)
+ if (bfd_seek (abfd, section->filepos + size, SEEK_SET) != 0)
{
if (bfd_get_error () != bfd_error_system_call)
bfd_set_error (bfd_error_wrong_format);
+2020-03-23 Alan Modra <amodra@gmail.com>
+
+ * Makefile.am (ALL_EMULATION_SOURCES): Reinstate ei386aout.c.
+ Include ei386aout dep file.
+ * Makefile.in: Regenerate.
+ * po/BLD-POTFILES.in: Regenerate.
+
2020-03-20 H.J. Lu <hongjiu.lu@intel.com>
* testsuite/ld-plugin/lto.exp (lto_link_tests): Run PR ld/25355
ehppalinux.c \
ehppanbsd.c \
ehppaobsd.c \
+ ei386aout.c \
ei386beos.c \
ei386bsd.c \
ei386go32.c \
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ehppalinux.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ehppanbsd.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ehppaobsd.Pc@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386aout.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386beos.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386bsd.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386go32.Pc@am__quote@
ehppalinux.c \
ehppanbsd.c \
ehppaobsd.c \
+ ei386aout.c \
ei386beos.c \
ei386bsd.c \
ei386go32.c \
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ehppalinux.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ehppanbsd.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ehppaobsd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386aout.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386beos.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386bsd.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386go32.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ehppalinux.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ehppanbsd.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ehppaobsd.Pc@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386aout.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386beos.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386bsd.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386go32.Pc@am__quote@