mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-27 12:03:41 +08:00
Error when 32-bit ar tries to handle 4G or larger files
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.
This commit is contained in:
parent
cc3e190059
commit
21d0a60620
@ -1,3 +1,9 @@
|
||||
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
|
||||
|
@ -1980,6 +1980,12 @@ bfd_ar_hdr_from_filesystem (bfd *abfd, const char *filename, bfd *member)
|
||||
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);
|
||||
|
Loading…
Reference in New Issue
Block a user