aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDominik Vogt <vogt@linux.vnet.ibm.com>2016-07-29 08:04:01 +0000
committerAndreas Krebbel <krebbel@gcc.gnu.org>2016-07-29 08:04:01 +0000
commit7b11fbb8383cc842a9788115077d7d1dcb69c418 (patch)
tree47e393d991c9aac28081ee86d635052b7f29cba7 /gcc
parent883b6d4e1b1c826007d12b4685b4e7b0fffc5347 (diff)
downloadgcc-7b11fbb8383cc842a9788115077d7d1dcb69c418.zip
gcc-7b11fbb8383cc842a9788115077d7d1dcb69c418.tar.gz
gcc-7b11fbb8383cc842a9788115077d7d1dcb69c418.tar.bz2
gfortran: Fix allocation of diagnostig string (was too small).
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. gcc/fortran/ChangeLog: * trans-array.c (gfc_conv_array_ref): Fix allocation of diagnostic message (was too small). From-SVN: r238849
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/trans-array.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index b9ca106..e8f8a81 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,8 @@
+2016-07-29 Dominik Vogt <vogt@linux.vnet.ibm.com>
+
+ * trans-array.c (gfc_conv_array_ref): Fix allocation of diagnostic
+ message (was too small).
+
2016-07-28 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/71067
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);