Fix seg-fault attempting to compress a debug section in a corrupt binary.

PR binutils/21431
	* compress.c (bfd_init_section_compress_status): Check the return
	value from bfd_malloc.
This commit is contained in:
Nick Clifton 2017-04-26 13:07:49 +01:00
parent c185f580b2
commit e63d123268
2 changed files with 15 additions and 10 deletions

View File

@ -1,3 +1,9 @@
2017-04-26 Nick Clifton <nickc@redhat.com>
PR binutils/21431
* compress.c (bfd_init_section_compress_status): Check the return
value from bfd_malloc.
2017-04-24 H.J. Lu <hongjiu.lu@intel.com>
* elf64-x86-64.c (elf_x86_64_link_hash_entry): Add

View File

@ -542,7 +542,6 @@ bfd_init_section_compress_status (bfd *abfd, sec_ptr sec)
{
bfd_size_type uncompressed_size;
bfd_byte *uncompressed_buffer;
bfd_boolean ret;
/* Error if not opened for read. */
if (abfd->direction != read_direction
@ -558,18 +557,18 @@ bfd_init_section_compress_status (bfd *abfd, sec_ptr sec)
/* Read in the full section contents and compress it. */
uncompressed_size = sec->size;
uncompressed_buffer = (bfd_byte *) bfd_malloc (uncompressed_size);
/* PR 21431 */
if (uncompressed_buffer == NULL)
return FALSE;
if (!bfd_get_section_contents (abfd, sec, uncompressed_buffer,
0, uncompressed_size))
ret = FALSE;
else
{
uncompressed_size = bfd_compress_section_contents (abfd, sec,
uncompressed_buffer,
uncompressed_size);
ret = uncompressed_size != 0;
}
return FALSE;
return ret;
uncompressed_size = bfd_compress_section_contents (abfd, sec,
uncompressed_buffer,
uncompressed_size);
return uncompressed_size != 0;
}
/*