From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.15.19]) by sourceware.org (Postfix) with ESMTPS id 0EF83384E7A1; Mon, 12 Dec 2022 20:22:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 0EF83384E7A1 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.de; s=s31663417; t=1670876532; bh=a/XIyCkluLS4wGTXqcUZbU9S0TFzMOGzJ2VvBzOivqo=; h=X-UI-Sender-Class:From:To:Subject:Date; b=cp79rSd5nmnDnTPu+rLv5EdLdsHN3T00R7azST3ompsRoi59cswk8213MqoVN2kIN wqEGGie2LYVnRjNMGoJqyFrLEoZwqCcrPSndF2Bv9L7E3gtwE66JK6ZYpaJx+N4T/B Bw5lH6nWLGQkSSdKu4kRTbH50AtacxaPkTBrraA1h174YFRqHIex6A7vwJ7R6dbVGj nZiqFKbkfkDUEjTzJDVVkGQuTNmVsOC3ZEEx/yDvlYyDuzX5iYSDUq9llRgMY11gnl XQmLzvNaIUMbjGbAWJ3S0zDj4sbXoppf3dV85TvakWjBuS5vBTahmKk6uSfwSxrD2X aLrktJ/jf3Png== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [93.207.85.103] ([93.207.85.103]) by web-mail.gmx.net (3c-app-gmx-bs69.server.lan [172.19.170.214]) (via HTTP); Mon, 12 Dec 2022 21:22:12 +0100 MIME-Version: 1.0 Message-ID: From: Harald Anlauf To: fortran , gcc-patches Subject: [PATCH] Fortran: NULL pointer dereference while parsing a function [PR107423] Content-Type: multipart/mixed; boundary=refeik-a5387bf3-51ba-46d7-b6f3-5847157ee35d Date: Mon, 12 Dec 2022 21:22:12 +0100 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:niCoHPHDIgoyxV3gWcoB4gmrttC5Y3q3BHDj2AwBqcCpITjW+9Apyq/TJGRGjCUFMT+BW 3EfGkTOnNeTieHlKbSKT/8xN8jFvcTPtEnN9LAm/8L9hStv7wuqTdzUnz9UdTcFeLytLmVbVA5n3 eSWwenVJJ3pPJpmiZA7mDcnuzgV2T+2MCcxdNJxENq5jrobK1UIql1p1nqheMi8mVeo/DJUrAbUh tkiR+mRAG9pWEZ1NHZztuHoE0zrPFIhwgfzHQfqwWTCLflceNASN3WrRHppjc2+Y/gLF2q6M2Uh1 fg= UI-OutboundReport: notjunk:1;M01:P0:c+RFhWziabc=;F6BkJEeE9xP4LFzBMHTqH9sMc/o rXwVC+NFum8grpH7IGMI827k7TshDqFh0NaGWy84zilZPDie1xyOQ38mWKu1j+P3miY7LeZoW AD8NN9oHxUCerB/PVCm5a3mB7T5393FcJ8IzFeRhlaW8i9hZDw2GkZ5Yf5Xh0h1jLNiZSbN// +4/6ZiB0QdIw4WhU0SB46fm79oI89j/D1GRdSQH1bGslDXfYFUS0CF+Q5Drn+SbFB/LRJnQ1j Lzl9cE+vmkGWYFmDR3f/nwGF5OQ6iiSMcu0NwL5eIvjkV1szk8Vedpwk0CfzkOk5VWHWKdlzW kfPAoLc6Zzk/LixM07wdbZHZOj6y3mRSsPzj3SueNPH6Ni+fzT+OZfCk/corLfuD3WHp03+N7 RefcYmGfNWlDtcUrx/pC5+6blyxVGvpW/uhaBDk8ZZmymzepoht/Tf8ZHk8ojVSuj5iYr7xJk m70pCeV6lbiJRloC8/7ha4si/g2wzbPy6E2KvUjupVBSWa/ePUt9lr/45bQTjLsmgHO+HkqM5 rG6dnZFZmvH6nMJJ+b/YtltrnoJEMLN9etrZToEQLofMXuit2+wZhCLWWbpaDGgbnjWe7Bkb/ jcCV+MOvZoBcztpx21342LOVRVKV06disufzN8tAFKAFw6TDFyC8rvDwk3oOXeX8guTEso5Wi eA4qPC8FApxNLUZXwo4ueJAzgfB+tARWxhNeBZ3tr9fwjX8zJ8Mq/hJrdJum8Sr1Tf1ZcC8Ao mtAfHmSUF1ljFYpOeI9WoUzECZBOTOlMwtq8CYCnv0QeYceIakMb9J7qcXef2jr+0Hs7qEmw1 V1r6YGnGuZnxH1hgIZ9bpNYhhOqxr/JL78FzXtQXhxuxI= X-Spam-Status: No, score=-13.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_LOW,SPF_HELO_NONE,SPF_PASS,TXREP 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: --refeik-a5387bf3-51ba-46d7-b6f3-5847157ee35d Content-Type: text/plain; charset=UTF-8 Dear all, here's another obvious patch by Steve which prevents a NULL pointer dereference during parsing. Regtested on x86_64-pc-linux-gnu. Will commit to mainline within 24h unless there are comments. Thanks, Harald --refeik-a5387bf3-51ba-46d7-b6f3-5847157ee35d Content-Type: text/x-patch Content-Disposition: attachment; filename=pr107423.diff Content-Transfer-Encoding: quoted-printable =46rom f23a5252ee086f9b78c44150d409e40a445c6928 Mon Sep 17 00:00:00 2001 From: Steve Kargl Date: Mon, 12 Dec 2022 21:11:07 +0100 Subject: [PATCH] Fortran: NULL pointer dereference while parsing a functio= n [PR107423] gcc/fortran/ChangeLog: PR fortran/107423 * parse.cc (parse_spec): Avoid NULL pointer dereference when parsing a function and an error occured. gcc/testsuite/ChangeLog: PR fortran/107423 * gfortran.dg/pr107423.f90: New test. =2D-- gcc/fortran/parse.cc | 2 +- gcc/testsuite/gfortran.dg/pr107423.f90 | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/pr107423.f90 diff --git a/gcc/fortran/parse.cc b/gcc/fortran/parse.cc index cdae43fa1fd..bc2b2188eea 100644 =2D-- a/gcc/fortran/parse.cc +++ b/gcc/fortran/parse.cc @@ -4015,7 +4015,7 @@ parse_spec (gfc_statement st) gfc_symbol* proc =3D gfc_current_ns->proc_name; gcc_assert (proc); - if (proc->result->ts.type =3D=3D BT_UNKNOWN) + if (proc->result && proc->result->ts.type =3D=3D BT_UNKNOWN) function_result_typed =3D true; } diff --git a/gcc/testsuite/gfortran.dg/pr107423.f90 b/gcc/testsuite/gfortr= an.dg/pr107423.f90 new file mode 100644 index 00000000000..9ae64c94ae0 =2D-- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr107423.f90 @@ -0,0 +1,18 @@ +! { dg-do compile } +! { dg-options "-std=3Df95" } +! PR fortran/107423 - ICE in parse_spec +! Contributed by G.Steinmetz + +program p + type t(k) + integer, kind :: k ! { dg-error "Fortran 2003" } + integer :: a + end type +contains + function f() + type(t(4)), allocatable :: x ! { dg-error "Invalid character" } + allocate (t(4) :: x) ! { dg-error "cannot be used" } + end ! { dg-error "END" } +end ! { dg-error "END" } + +! { dg-prune-output "Unexpected end of file" } =2D- 2.35.3 --refeik-a5387bf3-51ba-46d7-b6f3-5847157ee35d--