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 4FA293858D1E; Fri, 2 Sep 2022 19:19:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 4FA293858D1E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmx.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1662146393; bh=RCdJBdn8/7PCeOuce4SqMhYuq25eNQb5bxPLx6UgTWY=; h=X-UI-Sender-Class:From:To:Subject:Date; b=BPPu4V3mU7fZg6gn2XbGVp07Wh/qc3Kostl9rdm1xqDr7GB1X16jmcdMxhBhw60Uo J1PEBxkz4fOhXWOX276++naFJQYWddhm0Itx5FmAaNHMN3T5UqKjz45+omai4A8ct/ fGqj60POizFRvvuDJfZPBcynyG1NCPxT1Kh2Op9Y= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [79.251.1.151] ([79.251.1.151]) by web-mail.gmx.net (3c-app-gmx-bs46.server.lan [172.19.170.98]) (via HTTP); Fri, 2 Sep 2022 21:19:53 +0200 MIME-Version: 1.0 Message-ID: From: Harald Anlauf To: fortran , gcc-patches Subject: [PATCH, committed] Fortran: avoid NULL pointer dereference on invalid DATA constant [PR99349] Content-Type: multipart/mixed; boundary=kenitram-a60d0a01-aa80-4b00-9110-7aeb8b2aa6d2 Date: Fri, 2 Sep 2022 21:19:53 +0200 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:35Om98lrQSZDhq3P8VFueFurluDQhQTTljLMvIvAI5YhaXiVvKAr8MZYVnOA8NPBpUkVO hA7Vup8XfX5oc1r6YW3f5D3WcC2jitiiA27dEDS37ws8TyJct4UFzuDMnnBl7C+GVtqyjApqvQ2S oUEJRvM2kdM21O54LNz5mr174iCHzr3bH/W24peSu1nuC4TvO5nkmLWPtOZXx9xCsMmHnCEPGUoc gn7sKKfjgut5m/JxoTkohA/DGBTkOkBUf2COYbnWJlXeK0nOTu0wv0N68+FDjJ/XmSz2gWtSXjsz vQ= X-UI-Out-Filterresults: notjunk:1;V03:K0:okSwuOMXV9Q=:VabwDKOeJrXyrZvB2bIRY0 fpWK8cBlkIgz19zQ069lCGP4Y3fwxuTxTvSP382bipOwUCk0ErKBbjSd3n/w66gYpfF0mH/XY L0mbgdAgBtwVJnNVIGIfkiKhpJA5HP2hqYeBpb63OhxNUqe86/WTfXn85rtRbd0O6tBs+dnip HfbthQinASP+qztd26IJBofFshkargDVRVjmf31RR0a8c/2XPdiz3AS/HNZewUiBh5df3M/Zq zhXMurZFVCNb5ZLvWd4hd4hLvHgyp01dYz1hSNHUj4wpLwXKeREvMVx2frhdiVEZbqyyJ8i3Q HwGgi2/CKnUIGN0pLL4WxXDLEhnrb2A+JLu4I9VeLrb9VYmFMxYg1zMKunx1I21TkIWmMYlOr 37NPh8yRbL03mRFEnHWKTTuUSWEVsF84T/3CDI0iz6K1/CpE0svApLFaO0BYSLEC27bEDgWiS Dw6DmqCoMAePXTN/educKra9LECVhkh3BUj4Ps2OrgXWfs3/dKBzFkN039SYP6I/Vm3590u/N rahX3+j2PK2G+33TeFWu1e/QdbYDTVND2Nqax6nhz/jq6nN6w3iO4VS4nXPLJ+rL8fvPBFeEa oNu1scJHTVBXlocorbTGasZ9z5xb2GpADfWXkCGgvBOCGnrkybiMC5BYPV3rRQV2R2yemMR23 sAXeXUf5z9ecxaiRiQRE1smDlZVe1eCCO2kugnPAkN8oX34ZiIRWUeQ7Tr47fBnuALBqd2yjr 5L8TTzhfZV/yLSaIk35+PbocJj7nHyQeatjxIPs2rL0Dd5hSJUuuEsl/T1I= X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FREEMAIL_FROM,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --kenitram-a60d0a01-aa80-4b00-9110-7aeb8b2aa6d2 Content-Type: text/plain; charset=UTF-8 Dear all, I've committed the attached fix for a NULL pointer dereference as obvious after a discussion with Steve in the PR, and successful regtesting on x86_64-pc-linux-gnu, as r13-2382. See also https://gcc.gnu.org/g:b6aa7d45b502c01f8703c8d2cee2690f9aa8e282 Thanks, Harald --kenitram-a60d0a01-aa80-4b00-9110-7aeb8b2aa6d2 Content-Type: text/x-patch Content-Disposition: attachment; filename=pr99349.diff Content-Transfer-Encoding: quoted-printable =46rom b6aa7d45b502c01f8703c8d2cee2690f9aa8e282 Mon Sep 17 00:00:00 2001 From: Harald Anlauf Date: Fri, 2 Sep 2022 21:07:26 +0200 Subject: [PATCH] Fortran: avoid NULL pointer dereference on invalid DATA constant [PR99349] gcc/fortran/ChangeLog: PR fortran/99349 * decl.cc (match_data_constant): Avoid NULL pointer dereference. gcc/testsuite/ChangeLog: PR fortran/99349 * gfortran.dg/pr99349.f90: New test. Co-authored-by: Steven G. Kargl =2D-- gcc/fortran/decl.cc | 3 ++- gcc/testsuite/gfortran.dg/pr99349.f90 | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/pr99349.f90 diff --git a/gcc/fortran/decl.cc b/gcc/fortran/decl.cc index b6400514731..0f9b2ced4c2 100644 =2D-- a/gcc/fortran/decl.cc +++ b/gcc/fortran/decl.cc @@ -423,7 +423,8 @@ match_data_constant (gfc_expr **result) data-pointer-initialization compatible (7.5.4.6) with the initial data target; the data statement object is initially associated with the target. */ - if ((*result)->symtree->n.sym->attr.save + if ((*result)->symtree + && (*result)->symtree->n.sym->attr.save && (*result)->symtree->n.sym->attr.target) return m; gfc_free_expr (*result); diff --git a/gcc/testsuite/gfortran.dg/pr99349.f90 b/gcc/testsuite/gfortra= n.dg/pr99349.f90 new file mode 100644 index 00000000000..e1f4628af0b =2D-- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr99349.f90 @@ -0,0 +1,9 @@ +! { dg-do compile } +! PR fortran/99349 - ICE in match_data_constant +! Contributed by G.Steinmetz + +function f() + logical, parameter :: a((1.)/0) =3D .true. ! { dg-error "Parameter arra= y" } + integer :: b + data b /a%kind/ ! { dg-error "Syntax error" } +end =2D- 2.35.3 --kenitram-a60d0a01-aa80-4b00-9110-7aeb8b2aa6d2--