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] Extend previous patch to cover uncompress_section_contents returning FALSE to other callers.


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

commit 1835f746a7c7fff70a2cc03a051b14fdc6b3f73f
Author: Nick Clifton <nickc@redhat.com>
Date:   Mon Feb 13 15:19:48 2017 +0000

    Extend previous patch to cover uncompress_section_contents returning FALSE to other callers.
    
    	PR binutils/21135
    	(dump_section_as_bytes, load_specific_debug_section): Likewise.

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

diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index fdd5f33..294e66c 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -3,6 +3,7 @@
 	PR binutils/21135
 	* readelf.c (dump_section_as_bytes): Handle the case where
 	uncompress_section_contents returns false.
+	(dump_section_as_bytes, load_specific_debug_section): Likewise.
 
 2017-02-13  Nick Clifton  <nickc@redhat.com>
 
diff --git a/binutils/readelf.c b/binutils/readelf.c
index ede5747..c73a327 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -12691,10 +12691,18 @@ dump_section_as_strings (Elf_Internal_Shdr * section, FILE * file)
 	  new_size -= 12;
 	}
 
-      if (uncompressed_size
-	  && uncompress_section_contents (& start,
-					  uncompressed_size, & new_size))
-	num_bytes = new_size;
+      if (uncompressed_size)
+	{
+	  if (uncompress_section_contents (& start,
+					   uncompressed_size, & new_size))
+	    num_bytes = new_size;
+	  else
+	    {
+	      error (_("Unable to decompress section %s\n"),
+		     printable_section_name (section));
+	      return;
+	    }
+	}
     }
 
   /* If the section being dumped has relocations against it the user might
@@ -12986,14 +12994,22 @@ load_specific_debug_section (enum dwarf_section_display_enum debug,
 	  size -= 12;
 	}
 
-      if (uncompressed_size
-	  && uncompress_section_contents (&start, uncompressed_size,
-					  &size))
+      if (uncompressed_size)
 	{
-	  /* Free the compressed buffer, update the section buffer
-	     and the section size if uncompress is successful.  */
-	  free (section->start);
-	  section->start = start;
+	  if (uncompress_section_contents (&start, uncompressed_size,
+					   &size))
+	    {
+	      /* Free the compressed buffer, update the section buffer
+		 and the section size if uncompress is successful.  */
+	      free (section->start);
+	      section->start = start;
+	    }
+	  else
+	    {
+	      error (_("Unable to decompress section %s\n"),
+		     printable_section_name (sec));
+	      return 0;
+	    }
 	}
       section->size = size;
     }


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