aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/array.c
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2019-10-24 10:49:02 +0200
committerMartin Liska <marxin@gcc.gnu.org>2019-10-24 08:49:02 +0000
commitd136595df77f75bc6e5132e26f09cad031f38c71 (patch)
tree26803e010c153593fe9cf23c845d7eae3e88e346 /gcc/fortran/array.c
parent0214d31a48f867b9b00134cea7223d35ed7865aa (diff)
downloadgcc-d136595df77f75bc6e5132e26f09cad031f38c71.zip
gcc-d136595df77f75bc6e5132e26f09cad031f38c71.tar.gz
gcc-d136595df77f75bc6e5132e26f09cad031f38c71.tar.bz2
Fix another UBSAN in Fortran coarray.
2019-10-24 Martin Liska <mliska@suse.cz> PR fortran/92174 * array.c (gfc_resolve_array_spec): Break the loop for out of bounds index. * resolve.c (is_non_constant_shape_array): Likewise. From-SVN: r277367
Diffstat (limited to 'gcc/fortran/array.c')
-rw-r--r--gcc/fortran/array.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/fortran/array.c b/gcc/fortran/array.c
index f0980dd..36223d2 100644
--- a/gcc/fortran/array.c
+++ b/gcc/fortran/array.c
@@ -410,6 +410,9 @@ gfc_resolve_array_spec (gfc_array_spec *as, int check_constant)
for (i = 0; i < as->rank + as->corank; i++)
{
+ if (i == GFC_MAX_DIMENSIONS)
+ return false;
+
e = as->lower[i];
if (!resolve_array_bound (e, check_constant))
return false;