Fix invalid read of section contents whilst processing a corrupt binary.
authorNick Clifton <nickc@redhat.com>
Mon, 13 Feb 2017 15:04:37 +0000 (15:04 +0000)
committerNick Clifton <nickc@redhat.com>
Mon, 13 Feb 2017 15:04:37 +0000 (15:04 +0000)
PR binutils/21135
* readelf.c (dump_section_as_bytes): Handle the case where
uncompress_section_contents returns false.

binutils/ChangeLog
binutils/readelf.c

index 10140c2..fdd5f33 100644 (file)
@@ -1,5 +1,11 @@
 2017-02-13  Nick Clifton  <nickc@redhat.com>
 
+       PR binutils/21135
+       * readelf.c (dump_section_as_bytes): Handle the case where
+       uncompress_section_contents returns false.
+
+2017-02-13  Nick Clifton  <nickc@redhat.com>
+
        PR binutils/21149
        * readelf.c (get_compression_header): Add size parameter.  Check
        size against sizeof compression header before attempting to
index e6f48b4..ede5747 100644 (file)
@@ -12825,10 +12825,18 @@ dump_section_as_bytes (Elf_Internal_Shdr * section,
          new_size -= 12;
        }
 
-      if (uncompressed_size
-         && uncompress_section_contents (& start, uncompressed_size,
-                                         & new_size))
-       section_size = new_size;
+      if (uncompressed_size)
+       {
+         if (uncompress_section_contents (& start, uncompressed_size,
+                                          & new_size))
+           section_size = new_size;
+         else
+           {
+             error (_("Unable to decompress section %s\n"),
+                    printable_section_name (section));
+             return;
+           }
+       }
     }
 
   if (relocate)