diff options
-rw-r--r-- | bfd/ChangeLog | 7 | ||||
-rw-r--r-- | bfd/elfcode.h | 13 | ||||
-rw-r--r-- | bfd/elfcore.h | 15 |
3 files changed, 16 insertions, 19 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 5bd8d55..88b7b86 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2015-10-15 Riku Voipio <riku.voipio@iki.fi> + + PR ld/19123 + * elfcore.h (elf_core_file_p): Use the file_ptr type to hold the + offset for bfd_seek. + * elfcode.h (elf_object_p): Likewise. + 2015-10-14 Rich Felker <dalias@libc.org> PR ld/19091 diff --git a/bfd/elfcode.h b/bfd/elfcode.h index 7e309cf..26af1d1 100644 --- a/bfd/elfcode.h +++ b/bfd/elfcode.h @@ -605,13 +605,10 @@ elf_object_p (bfd *abfd) if (i_ehdrp->e_shoff != 0) { - bfd_signed_vma where = i_ehdrp->e_shoff; - - if (where != (file_ptr) where) - goto got_wrong_format_error; + file_ptr where = (file_ptr) i_ehdrp->e_shoff; /* Seek to the section header table in the file. */ - if (bfd_seek (abfd, (file_ptr) where, SEEK_SET) != 0) + if (bfd_seek (abfd, where, SEEK_SET) != 0) goto got_no_match; /* Read the first section header at index 0, and convert to internal @@ -657,19 +654,17 @@ elf_object_p (bfd *abfd) goto got_wrong_format_error; where += (i_ehdrp->e_shnum - 1) * sizeof (x_shdr); - if (where != (file_ptr) where) - goto got_wrong_format_error; if ((bfd_size_type) where <= i_ehdrp->e_shoff) goto got_wrong_format_error; - if (bfd_seek (abfd, (file_ptr) where, SEEK_SET) != 0) + if (bfd_seek (abfd, where, SEEK_SET) != 0) goto got_no_match; if (bfd_bread (&x_shdr, sizeof x_shdr, abfd) != sizeof (x_shdr)) goto got_no_match; /* Back to where we were. */ where = i_ehdrp->e_shoff + sizeof (x_shdr); - if (bfd_seek (abfd, (file_ptr) where, SEEK_SET) != 0) + if (bfd_seek (abfd, where, SEEK_SET) != 0) goto got_no_match; } } diff --git a/bfd/elfcore.h b/bfd/elfcore.h index c4e5b43..93b3cc4 100644 --- a/bfd/elfcore.h +++ b/bfd/elfcore.h @@ -188,13 +188,10 @@ elf_core_file_p (bfd *abfd) { Elf_External_Shdr x_shdr; Elf_Internal_Shdr i_shdr; - bfd_signed_vma where = i_ehdrp->e_shoff; - - if (where != (file_ptr) where) - goto wrong; + file_ptr where = (file_ptr) i_ehdrp->e_shoff; /* Seek to the section header table in the file. */ - if (bfd_seek (abfd, (file_ptr) where, SEEK_SET) != 0) + if (bfd_seek (abfd, where, SEEK_SET) != 0) goto fail; /* Read the first section header at index 0, and convert to internal @@ -217,7 +214,7 @@ elf_core_file_p (bfd *abfd) { Elf_External_Phdr x_phdr; Elf_Internal_Phdr i_phdr; - bfd_signed_vma where; + file_ptr where; /* Check that we don't have a totally silly number of program headers. */ @@ -225,13 +222,11 @@ elf_core_file_p (bfd *abfd) || i_ehdrp->e_phnum > (unsigned int) -1 / sizeof (i_phdr)) goto wrong; - where = i_ehdrp->e_phoff + (i_ehdrp->e_phnum - 1) * sizeof (x_phdr); - if (where != (file_ptr) where) - goto wrong; + where = (file_ptr)(i_ehdrp->e_phoff + (i_ehdrp->e_phnum - 1) * sizeof (x_phdr)); if ((bfd_size_type) where <= i_ehdrp->e_phoff) goto wrong; - if (bfd_seek (abfd, (file_ptr) where, SEEK_SET) != 0) + if (bfd_seek (abfd, where, SEEK_SET) != 0) goto fail; if (bfd_bread (&x_phdr, sizeof (x_phdr), abfd) != sizeof (x_phdr)) goto fail; |