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