From patchwork Wed Mar 30 20:43:24 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Harald Anlauf X-Patchwork-Id: 52482 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A6951383981B for ; Wed, 30 Mar 2022 20:44:11 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A6951383981B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1648673051; bh=rmGzd1xS0p649Et3mbPBqjNfc6/fGCK5f+mf/HvKC+0=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=Rpcp3CSXl0HJN5Bk1BwZ3pAHsPL6gQnD0WZq2g6HX1xGQqYSUF0lOL0EtA7ymPY/s QzBTivAzykzQ5uBxhdveowGsBN7bKZ04dTNvp96Lk2BSXX/ztHel8ph6kGjbyhr/m8 gKj1IGGFJvbsklSBlVZbUPEHvOkEJklRqMIVQXFo= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org 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: To: fortran , gcc-patches Subject: [committed] PR fortran/100892 - ICE on procedure pointer to function returning array of size n 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: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Harald Anlauf via Gcc-patches From: Harald Anlauf Reply-To: Harald Anlauf Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" 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 From 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. --- 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 --- a/gcc/fortran/check.cc +++ b/gcc/fortran/check.cc @@ -1504,7 +1504,7 @@ gfc_check_associated (gfc_expr *pointer, gfc_expr *target) argument of intrinsic inquiry functions. */ if (pointer->rank != -1 && !rank_check (target, 0, pointer->rank)) t = false; - if (target->rank > 0) + if (target->rank > 0 && target->ref) { for (i = 0; i < target->rank; i++) if (target->ref->u.ar.dimen_type[i] == DIMEN_VECTOR) diff --git a/gcc/testsuite/gfortran.dg/associated_target_8.f90 b/gcc/testsuite/gfortran.dg/associated_target_8.f90 new file mode 100644 index 00000000000..75c2740a188 --- /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 size n + +module m + implicit none + procedure(func1), pointer :: my_ptr => 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 = 0. + end function +end module m -- 2.34.1