]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR plugins/90924 (lto-plugin/lto-plugin.c heap memory corruption due to insufficie...
authorRichard Biener <rguenther@suse.de>
Thu, 25 Jul 2019 10:50:47 +0000 (10:50 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 25 Jul 2019 10:50:47 +0000 (10:50 +0000)
2019-07-25  Richard Biener  <rguenther@suse.de>

PR lto/90924
Backport from mainline
2019-07-12  Ren Kimura  <rkx1209dev@gmail.com>

* simple-object-elf.c (simple_object_elf_match): Check zero value
shstrndx.

From-SVN: r273795

libiberty/ChangeLog
libiberty/simple-object-elf.c

index b785e710df351649604cd7038b7b1b23ffe83d9b..0ecdec0e4c953f3c6e1e8073cfb399cce713bbac 100644 (file)
@@ -1,3 +1,12 @@
+2019-07-25  Richard Biener  <rguenther@suse.de>
+
+       PR lto/90924
+       Backport from mainline
+       2019-07-12  Ren Kimura  <rkx1209dev@gmail.com>
+
+       * simple-object-elf.c (simple_object_elf_match): Check zero value
+       shstrndx.
+
 2018-12-06  Release Manager
 
        * GCC 7.4.0 released.
index a733e4b1a2af788d85ff02473e838d2b4844a73b..7a25454dbade36fd857a4b79448a8aa926d4f6e3 100644 (file)
@@ -479,6 +479,14 @@ simple_object_elf_match (unsigned char header[SIMPLE_OBJECT_MATCH_HEADER_LEN],
       return NULL;
     }
 
+  if (eor->shstrndx == 0)
+    {
+      *errmsg = "invalid ELF shstrndx == 0";
+      *err = 0;
+      XDELETE (eor);
+      return NULL;
+    }
+
   return (void *) eor;
 }