The attached patch fixes an out of bound write to memory allocated
with alloca() on the stack.  This rarely ever happened because on
one hand -fbounds-check needs to be enabled, and on the other hand
alloca() used to allocate a few bytes extra most of the time so
most of the time the excess write did no harm.

Ciao

Dominik ^_^  ^_^

-- 

Dominik Vogt
IBM Germany
gcc/fortran/ChangeLog

        * trans-array.c (gfc_conv_array_ref): Fix allocation of diagnostic
        message (was too small).
>From a364536c94c5b5c124c3fd6e5cb547aa941aca12 Mon Sep 17 00:00:00 2001
From: Dominik Vogt <v...@linux.vnet.ibm.com>
Date: Tue, 26 Jul 2016 13:17:29 +0100
Subject: [PATCH] gfortran: Fix allocation of diagnostig string (was too
 small).

---
 gcc/fortran/trans-array.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c
index e95c8dd..7572755 100644
--- a/gcc/fortran/trans-array.c
+++ b/gcc/fortran/trans-array.c
@@ -3332,7 +3332,7 @@ gfc_conv_array_ref (gfc_se * se, gfc_array_ref * ar, 
gfc_expr *expr,
          if (ref->type == REF_ARRAY && &ref->u.ar == ar)
            break;
          if (ref->type == REF_COMPONENT)
-           len += 1 + strlen (ref->u.c.component->name);
+           len += 2 + strlen (ref->u.c.component->name);
        }
 
       var_name = XALLOCAVEC (char, len);
-- 
2.3.0

Reply via email to