We used to silently truncate the size returned by stat() to 32 bits.
While it is possible to make binutils handle a 64-bit off_t on a
32-bit host, to me the effort needed doesn't seem worth the benefit.
Instead, error if we truncate the size. I've written the test the way
I have to avoid a signed/unsigned warning.
PR 22116
* archive.c (bfd_ar_hdr_from_filesystem): Detect when status.st_size
overflows bfd_size_type.
+2017-09-15 Alan Modra <amodra@gmail.com>
+
+ PR 22116
+ * archive.c (bfd_ar_hdr_from_filesystem): Detect when status.st_size
+ overflows bfd_size_type.
+
2017-09-14 H.J. Lu <hongjiu.lu@intel.com>
PR ld/22135
status.st_gid);
_bfd_ar_spacepad (hdr->ar_mode, sizeof (hdr->ar_mode), "%-8lo",
status.st_mode);
+ if (status.st_size - (bfd_size_type) status.st_size != 0)
+ {
+ bfd_set_error (bfd_error_file_too_big);
+ free (ared);
+ return NULL;
+ }
if (!_bfd_ar_sizepad (hdr->ar_size, sizeof (hdr->ar_size), status.st_size))
{
free (ared);