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 | |
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.
-rw-r--r-- | binutils/ChangeLog | 5 | ||||
-rw-r--r-- | binutils/elfcomm.c | 9 | ||||
-rw-r--r-- | binutils/elfcomm.h | 2 |
3 files changed, 13 insertions, 3 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index dad2ed6..bfaeaf0 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2020-03-19 Alan Modra <amodra@gmail.com> + + * elfcomm.c (setup_archive): Make file_size an off_t. Comment. + * elfcomm.h (setup_archive): Update prototype. + 2020-03-16 Alan Modra <amodra@gmail.com> * readelf.c (get_symbols): New function. 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"), diff --git a/binutils/elfcomm.h b/binutils/elfcomm.h index 731d3db..8d962f2 100644 --- a/binutils/elfcomm.h +++ b/binutils/elfcomm.h @@ -74,7 +74,7 @@ extern char *adjust_relative_path (const char *, const char *, unsigned long); /* Read the symbol table and long-name table from an archive. */ extern int setup_archive (struct archive_info *, const char *, FILE *, - bfd_size_type, bfd_boolean, bfd_boolean); + off_t, bfd_boolean, bfd_boolean); /* Open and setup a nested archive, if not already open. */ extern int setup_nested_archive (struct archive_info *, const char *); |