diff options
author | Alan Modra <amodra@gmail.com> | 2020-03-19 11:47:45 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2020-03-19 11:55:04 +1030 |
commit | 645ba68105ee79511a79386811dd932be8becafa (patch) | |
tree | 0b468c2eda06836c06d8daf56df43ac60c5bda25 /binutils/elfcomm.c | |
parent | cdf236890ce1a8f44d24841d888728f9feb38c44 (diff) | |
download | binutils-645ba68105ee79511a79386811dd932be8becafa.zip binutils-645ba68105ee79511a79386811dd932be8becafa.tar.gz binutils-645ba68105ee79511a79386811dd932be8becafa.tar.bz2 |
setup_archive parameter mismatch
* elfcomm.c (setup_archive): Make file_size an off_t. Comment.
* elfcomm.h (setup_archive): Update prototype.
Diffstat (limited to 'binutils/elfcomm.c')
-rw-r--r-- | binutils/elfcomm.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/binutils/elfcomm.c b/binutils/elfcomm.c index e5c6a32..b0fbf57 100644 --- a/binutils/elfcomm.c +++ b/binutils/elfcomm.c @@ -21,6 +21,11 @@ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ +/* Do not use BFD types in this file that differ in size depending on + whether BFD64 is defined. Functions in this file are used by + readelf.c and elfedit.c which define BFD64, and by objdump.c which + doesn't. */ + #include "sysdep.h" #include "libiberty.h" #include "filenames.h" @@ -607,7 +612,7 @@ process_archive_index_and_symbols (struct archive_info * arch, int setup_archive (struct archive_info *arch, const char *file_name, - FILE *file, bfd_size_type file_size, + FILE *file, off_t file_size, bfd_boolean is_thin_archive, bfd_boolean read_symbols) { size_t got; @@ -671,7 +676,7 @@ setup_archive (struct archive_info *arch, const char *file_name, return 1; } /* PR 17531: file: 639d6a26. */ - if (arch->longnames_size > file_size + if ((off_t) arch->longnames_size > file_size || (signed long) arch->longnames_size < 0) { error (_("%s: long name table is too big, (size = 0x%lx)\n"), |