From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by sourceware.org (Postfix) with ESMTPS id 30F703839801; Wed, 30 Mar 2022 20:43:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 30F703839801 X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [79.251.15.138] ([79.251.15.138]) by web-mail.gmx.net (3c-app-gmx-bap30.server.lan [172.19.172.100]) (via HTTP); Wed, 30 Mar 2022 22:43:24 +0200 MIME-Version: 1.0 Message-ID: From: Harald Anlauf To: fortran , gcc-patches Subject: [committed] PR fortran/100892 - ICE on procedure pointer to function returning array of size n Content-Type: multipart/mixed; boundary=nika-ec77b139-beec-4589-af47-aee567711ff8 Date: Wed, 30 Mar 2022 22:43:24 +0200 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:kyeUS2dwDLIpogOKZ4vKo8Q9OF33W9uvOwkROIp9MyvWm/TdaPvdQ9+91fdYdQvT1+c7l cx1TdR+yaW7cBDAmqTlqsLZJER+M1vYNMaEWLEckxICloD+Hyo+Q2kuj6IAPOK9TPYS+1PYXdBeC w12j8H+V8w4CA8Ni7EkkjpOLXdvjMipAkmYdmNwqzakXrPvuqWe9Pe3yrbju2ypgGP1/VJyqoZxC xmML6OeQDD/o7x4JEZzfI9C+GrXtd4A+aJ/bsU/dPmjiEc0Sj/2SYH8avr4rzgEaKzeMr/jtJ9xv po= X-UI-Out-Filterresults: notjunk:1;V03:K0:yQpLKs6K/co=:8Gy80xr6mkWD2TfQi9KTJ0 L8VWUq6OqW9ucHUwnq4LcUddfmQnpC7DxA/g5VvvenZ6xq5DVeRhYq9B0B9l1TMitp/0NE89p yBxoPLlo1GdOdj6FjddIFCvwTZcJidX+3GkNrd9gSGxN6EQjkX3W/MBGQGgBk2G6IgFozutwj 75317BMgsQ0G5DFZ3bAlVo1wrk3g4AjKKnZiCo5fRoweqNN8o5w4mWBRFmTDpt/D7/etqiY6O LuFG4bjJTvVksXctXklA9B9CgN1U7YWLpCiEpuFdXawv0TCT1HsdMG7Cu92JFQVO/BwSGR2Pz 9DCuTRrvJy6XzHZyMn8CQEDAex8QNr7vmh5+BsrMOM5D87FttQESmRKSC5wSs2kLQhwhaf5mG +uEIUOZYwcMiM3PhbzJ92C8DyfTL4xzRAXj8uh8fPScX8/6CpGhkKD6M8mNcw4shYcdUxfNyB nQk/zZWNofTsnFWs/1Qam8A14NSLKpo7e+KJZtpRmn5rytaeyrugZVRI/M5u2djlXPz1Wli77 LNVDgNortmdhhdvH2M0ymeySspVSl+w/IednF3YJqtmBque5j/E2zmbOXrb3cv648mv7X80Jn 0C409jUuJhitWiFsr9e7fDGTtZiQgl2w7S07JOThvdM0fjB40gkyekDzdaQm9RhKfopn7x1WV bOXfQnu0uqSUljRdvnce+KKwH7mroaTN2jd0+YV1h1UGOcu/Vep7ogzdrYdnab64zuy4Iqd6K My3v0JH5qam1vo+fEVUCnJPwHpVX6liCN47RQeUVAO8HnWtbWV8v+tHW7x0g4sx7rIk9CReqB 79Gn4hO X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: fortran@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Fortran mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Mar 2022 20:43:28 -0000 --nika-ec77b139-beec-4589-af47-aee567711ff8 Content-Type: text/plain; charset=UTF-8 Dear all, I committed the attached patch as obvious: we had a NULL pointer dereference when checking the arguments of the ASSOCIATED intrinsic when the target was an array-valued function. Regtested on x86_64-pc-linux-gnu. Thanks, Harald --nika-ec77b139-beec-4589-af47-aee567711ff8 Content-Type: text/x-patch Content-Disposition: attachment; filename=pr100892.diff Content-Transfer-Encoding: quoted-printable =46rom b4e4b35f4ebe561826489bed971324efc99c5423 Mon Sep 17 00:00:00 2001 From: Harald Anlauf Date: Wed, 30 Mar 2022 22:36:12 +0200 Subject: [PATCH] Fortran: NULL pointer dereference checking arguments to ASSOCIATED intrinsic gcc/fortran/ChangeLog: PR fortran/100892 * check.cc (gfc_check_associated): Avoid NULL pointer dereference. gcc/testsuite/ChangeLog: PR fortran/100892 * gfortran.dg/associated_target_8.f90: New test. =2D-- gcc/fortran/check.cc | 2 +- .../gfortran.dg/associated_target_8.f90 | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/associated_target_8.f90 diff --git a/gcc/fortran/check.cc b/gcc/fortran/check.cc index fc97bb1371e..0c2cb50c6a7 100644 =2D-- a/gcc/fortran/check.cc +++ b/gcc/fortran/check.cc @@ -1504,7 +1504,7 @@ gfc_check_associated (gfc_expr *pointer, gfc_expr *t= arget) argument of intrinsic inquiry functions. */ if (pointer->rank !=3D -1 && !rank_check (target, 0, pointer->rank)) t =3D false; - if (target->rank > 0) + if (target->rank > 0 && target->ref) { for (i =3D 0; i < target->rank; i++) if (target->ref->u.ar.dimen_type[i] =3D=3D DIMEN_VECTOR) diff --git a/gcc/testsuite/gfortran.dg/associated_target_8.f90 b/gcc/tests= uite/gfortran.dg/associated_target_8.f90 new file mode 100644 index 00000000000..75c2740a188 =2D-- /dev/null +++ b/gcc/testsuite/gfortran.dg/associated_target_8.f90 @@ -0,0 +1,16 @@ +! { dg-do compile } +! PR fortran/100892 - procedure pointer to function returning array of si= ze n + +module m + implicit none + procedure(func1), pointer :: my_ptr =3D> null() +contains + subroutine test_sub + if (associated (my_ptr, func1)) print *,'associated' + end subroutine test_sub + function func1 (n) + integer, intent(in) :: n + real, dimension(n) :: func1 + func1 =3D 0. + end function +end module m =2D- 2.34.1 --nika-ec77b139-beec-4589-af47-aee567711ff8--