Check the external compression header size

Since the internal compression header size can be bigger than the
external compression header size, we should check the external
compression header size.

	* readelf.c (load_specific_debug_section): Check the external
	compression header size.
This commit is contained in:
H.J. Lu 2016-08-29 08:49:20 -07:00
parent 74437ea28f
commit f53be9779b
2 changed files with 11 additions and 4 deletions

View File

@ -1,3 +1,8 @@
2016-08-29 H.J. Lu <hongjiu.lu@intel.com>
* readelf.c (load_specific_debug_section): Check the external
compression header size.
2016-08-19 Nick Clifton <nickc@redhat.com>
* testsuite/binutils-all/readelf.s: Adjust expected ordering of
@ -17,9 +22,9 @@
off the end of the section when populating the directory table and
file table.
(frame_display_row): Set max_regs equal to ncols.
(load_specific_debug_section): If the section is compressed, but
it is not big enough to hold a compression header then warn and
return 0.
* readelf.c (load_specific_debug_section): If the section is
compressed, but it is not big enough to hold a compression
header then warn and return 0.
PR binutils/20439
* dwarf.c (display_debug_lines_decoded): Check directory and file

View File

@ -12706,7 +12706,9 @@ load_specific_debug_section (enum dwarf_section_display_enum debug,
Elf_Internal_Chdr chdr;
unsigned int compression_header_size;
if (size < sizeof chdr)
if (size < (is_32bit_elf
? sizeof (Elf32_External_Chdr)
: sizeof (Elf64_External_Chdr)))
{
warn (_("compressed section %s is too small to contain a compression header"),
section->name);