aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/frontend-passes.c
diff options
context:
space:
mode:
authorHarald Anlauf <anlauf@gmx.de>2021-12-14 21:57:04 +0100
committerHarald Anlauf <anlauf@gmx.de>2021-12-14 21:57:04 +0100
commitca39102e10643a6b3f07d06934cc0907ba83d9ee (patch)
treee50b0a7706b76635fc12457406a66e65da46c6bd /gcc/fortran/frontend-passes.c
parente866e1c92ecf88feeeafd5d55348451c9a181f3c (diff)
downloadgcc-ca39102e10643a6b3f07d06934cc0907ba83d9ee.zip
gcc-ca39102e10643a6b3f07d06934cc0907ba83d9ee.tar.gz
gcc-ca39102e10643a6b3f07d06934cc0907ba83d9ee.tar.bz2
Fortran: prevent NULL pointer dereference in check of passed do-loop variable
gcc/fortran/ChangeLog: PR fortran/103717 * frontend-passes.c (doloop_code): Prevent NULL pointer dereference when checking for passing a do-loop variable to a contained procedure with an interface mismatch. gcc/testsuite/ChangeLog: PR fortran/103717 * gfortran.dg/do_check_19.f90: New test.
Diffstat (limited to 'gcc/fortran/frontend-passes.c')
-rw-r--r--gcc/fortran/frontend-passes.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/fortran/frontend-passes.c b/gcc/fortran/frontend-passes.c
index c106ee0..6ffe072 100644
--- a/gcc/fortran/frontend-passes.c
+++ b/gcc/fortran/frontend-passes.c
@@ -2653,7 +2653,7 @@ doloop_code (gfc_code **c, int *walk_subtrees ATTRIBUTE_UNUSED,
do_sym = cl->ext.iterator->var->symtree->n.sym;
- if (a->expr && a->expr->symtree
+ if (a->expr && a->expr->symtree && f->sym
&& a->expr->symtree->n.sym == do_sym)
{
if (f->sym->attr.intent == INTENT_OUT)