cp-demangle.c (cplus_demangle_print_callback): Avoid zero-length VLAs.
authorBrooks Moses <bmoses@google.com>
Mon, 11 Jul 2016 23:48:41 +0000 (16:48 -0700)
committerBrooks Moses <brooks@gcc.gnu.org>
Mon, 11 Jul 2016 23:48:41 +0000 (16:48 -0700)
2016-06-12  Brooks Moses  <bmoses@google.com>

* cp-demangle.c (cplus_demangle_print_callback): Avoid zero-length
  VLAs.

From-SVN: r238233

libiberty/ChangeLog
libiberty/cp-demangle.c

index d6b200e0ef2eb0d43795bf56352d0e877fda3ae5..45b312bed5cdafdebf76dd35a85946b776114b2d 100644 (file)
@@ -1,3 +1,8 @@
+2016-06-12  Brooks Moses  <bmoses@google.com>
+
+       * cp-demangle.c (cplus_demangle_print_callback): Avoid zero-length
+         VLAs.
+
 2016-05-31  Alan Modra  <amodra@gmail.com>
 
        * xmemdup.c (xmemdup): Use xmalloc rather than xcalloc.
index 09d646994665ec692c78822320e37bca7e9d378e..7f664b9c5c0d13342d94a272bb3e312fb665a35a 100644 (file)
@@ -4128,8 +4128,12 @@ cplus_demangle_print_callback (int options,
 
   {
 #ifdef CP_DYNAMIC_ARRAYS
-    __extension__ struct d_saved_scope scopes[dpi.num_saved_scopes];
-    __extension__ struct d_print_template temps[dpi.num_copy_templates];
+    /* Avoid zero-length VLAs, which are prohibited by the C99 standard
+       and flagged as errors by Address Sanitizer.  */
+    __extension__ struct d_saved_scope scopes[(dpi.num_saved_scopes > 0)
+                                              ? dpi.num_saved_scopes : 1];
+    __extension__ struct d_print_template temps[(dpi.num_copy_templates > 0)
+                                                ? dpi.num_copy_templates : 1];
 
     dpi.saved_scopes = scopes;
     dpi.copy_templates = temps;