This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Check the external compression header size


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=f53be9779bb1220f33a8a45615e0fafd7b6f47c4

commit f53be9779bb1220f33a8a45615e0fafd7b6f47c4
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Aug 29 08:49:20 2016 -0700

    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.

Diff:
---
 binutils/ChangeLog | 11 ++++++++---
 binutils/readelf.c |  4 +++-
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index e709a2d..5ab28f8 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -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
diff --git a/binutils/readelf.c b/binutils/readelf.c
index adbee93..a99c521 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -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);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]