setup_archive parameter mismatch

* elfcomm.c (setup_archive): Make file_size an off_t.  Comment.
	* elfcomm.h (setup_archive): Update prototype.
This commit is contained in:
Alan Modra 2020-03-19 11:47:45 +10:30
parent cdf236890c
commit 645ba68105
3 changed files with 13 additions and 3 deletions

View File

@ -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.

View File

@ -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"),

View File

@ -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 *);