PR23966, mingw failure due to 32-bit long

PR 23966
	* libbfd.c (SSIZE_MAX): Define.
	(bfd_malloc, bfd_realloc): Don't cast size to long to check for
	"negative" values, compare against SSIZE_MAX instead.
This commit is contained in:
Alan Modra 2018-12-28 09:34:28 +10:30
parent d1a3c973fa
commit cb87d9f1a4
2 changed files with 13 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2018-12-28 Alan Modra <amodra@gmail.com>
PR 23966
* libbfd.c (SSIZE_MAX): Define.
(bfd_malloc, bfd_realloc): Don't cast size to long to check for
"negative" values, compare against SSIZE_MAX instead.
2018-12-23 H.J. Lu <hongjiu.lu@intel.com>
* elf32-i386.c (elf_i386_rtype_to_howto): Remove the unused bfd

View File

@ -254,6 +254,10 @@ _bfd_dummy_target (bfd *ignore_abfd ATTRIBUTE_UNUSED)
/* Allocate memory using malloc. */
#ifndef SSIZE_MAX
#define SSIZE_MAX ((size_t) -1 >> 1)
#endif
void *
bfd_malloc (bfd_size_type size)
{
@ -262,7 +266,7 @@ bfd_malloc (bfd_size_type size)
if (size != sz
/* This is to pacify memory checkers like valgrind. */
|| ((signed long) sz) < 0)
|| sz > SSIZE_MAX)
{
bfd_set_error (bfd_error_no_memory);
return NULL;
@ -304,7 +308,7 @@ bfd_realloc (void *ptr, bfd_size_type size)
if (size != sz
/* This is to pacify memory checkers like valgrind. */
|| ((signed long) sz) < 0)
|| sz > SSIZE_MAX)
{
bfd_set_error (bfd_error_no_memory);
return NULL;