aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/resolve.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/resolve.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/resolve.c')
-rw-r--r--gcc/fortran/resolve.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index 93f2d0a..5deeb4f 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -12266,6 +12266,9 @@ is_non_constant_shape_array (gfc_symbol *sym)
simplification now. */
for (i = 0; i < sym->as->rank + sym->as->corank; i++)
{
+ if (i == GFC_MAX_DIMENSIONS)
+ break;
+
e = sym->as->lower[i];
if (e && (!resolve_index_expr(e)
|| !gfc_is_constant_expr (e)))