From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) by sourceware.org (Postfix) with ESMTPS id 988D23858D33; Tue, 7 Feb 2023 19:36:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 988D23858D33 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=1675798594; bh=L5SrOOl9LlhYjUj2J0c9mjwbmA3LMT5urDAgP1l2A6g=; h=X-UI-Sender-Class:From:To:Subject:Date; b=LT9/DBqfcDXQKe2F0iK4GCgjsYTFxeI7i6vkk5TlfAdw169a3FeG30Ugz80uLW+JF EXq98f/Ml/xkXqkUzCLnqYprjrGVATJZg+dhpeFRFZ8/yd11gp9+eI9NB3JcMxkBuq ksXRIj3yquJiVvHzHjtQJDNcBSQdVa6alrtFlpDHNQoWY0IijGdJp8uscqS3Dy+eHE uBqM7h/Vh8ctbCEUjemapKl6NmYPDxTfs279OZqEdnGT6L/3OyKQv0qsJEJZa49CXy /C9J+RyKFGnEdA9+Nxr1rVrbZzfZ/kFt+YVosLy1hc/o/el3O2G8tL2XKyRzTLgiav S17PZSxYjbQCA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [93.207.88.147] ([93.207.88.147]) by web-mail.gmx.net (3c-app-gmx-bs54.server.lan [172.19.170.138]) (via HTTP); Tue, 7 Feb 2023 20:36:33 +0100 MIME-Version: 1.0 Message-ID: From: Harald Anlauf To: fortran , gcc-patches Subject: [PATCH] Fortran: error handling of global entity appearing in COMMON block [PR103259] Content-Type: multipart/mixed; boundary=trekuen-6877f202-d702-42b3-8998-de88646bd212 Date: Tue, 7 Feb 2023 20:36:33 +0100 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:1uDHZnectvFItJa3cuY/sgGywx3LqhYNoFlVsrrqnHo8znbaOI73OrQ65GGn15wZ+2Cdy NSQ1pkI7gaQmUVwV3xkDgm2VlgvRUt76Fe2cQcAlBEF4eXS6hGzT97vEfqgo8ODdGc+LIvq6ZEUf UNgtKfdEz3AM0fp2X1PjrVVpaUatUe83FZbQxn5un62l3OXHBkXyoXWTSKEeRNpMcIEg9JaNw3RE EUhJ2eSp48KIBLh3oAOvknCwexO33I0jVldbMesR+VUoF+bGAWXyUECOiXKOlLlpKOyzYDC346K8 II= UI-OutboundReport: notjunk:1;M01:P0:v2PUjXSnH4A=;8IgMQobk3vOHAvToE/E3vtVfOCk 7JThuElE11ij5ULSrILnqEjz3MAxK7Mn/vf1dx9U1fQKFoA3FgFRoDbZ2tsFH5PMnbIAkAHV0 1rXSbMTkaZstNTxIuki6rldo/0L+mdzs0xmGOivOPLxwKpn09tALyz4fLfdKVAdaTZTtmWlCE cfEqQj7ujLQhk3vy3wGLvM6xJFY9yyGGke/98ZZgPhImdQheYLXjM8UbXFYQ11KzYlBlycK8p 5PeqLwuIm5wGlkqFoA8PdeJm7F0h2r+tUQPA+kWh/dOV+v1WiO9+Z/E6aZgt+TUabgDXNXpQb 9KRqrnltjUirTxIRpnsSVkyfZ2fEZWYB0ysHs+GiGnY1PrEldNhgjtsBrSm/qbRbR97WlW67X NV1k/R5k1JLZNwBAaaWVdOeky/MAGCNtVkR5Vhjj2368BR2Hgo4vBcM9CuqdBG7nT0UH15Xwr XLezSrNOcr88eiEYIhUmu9ps0GJ3wVK33OFTJ7UpHn2UGrIH8qQFjozetQmzwAIEK1uGKnTnC moC/eK2QkiSBjTyUT3yseddIBPlztxYMdIZ/K+HEObfZROVodF2OmcWjn0ZljqDOSgCaXA7sV H4G8vDV1pHg4oa3+GfQ4lUjhp4n1rZ5SCfPCZjYNYicbmn09Zi/iIowve0+DS/LapVm/Zuc4a uQTLu3ie7WYtAvZ7dEqcIEjOA1onQiUr8rN16ms1mnDgiKeX5mbm6yHfxpQF7coHEOVX1u17E 9g4v+f3SulhzKNqo4zGa5nfHZIjrpDYaTKStanacDwiy/P0vKjxYJhojLHsk29+21oB3Jjbuh FOWclI+H5NhCT4+RdIeM/IyRt7BJHmo1X1nQ+ZhzWQFMY= X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_STOCKGEN,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H2,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: --trekuen-6877f202-d702-42b3-8998-de88646bd212 Content-Type: text/plain; charset=UTF-8 Dear all, the attached trivial patch by Steve fixes a NULL pointer dereference that occurs when an error shall be emitted for a global entity that conflicts with a symbol appearing in a COMMON block, but the symbol's location is not set. This may happen e.g. in the testcase in the PR, where the COMMON variables are imported from a module. Regtested on x86_64-pc-linux-gnu with no failures. I intend to commit as obvious within 24h unless there are comments. Thanks, Harald --trekuen-6877f202-d702-42b3-8998-de88646bd212 Content-Type: text/x-patch Content-Disposition: attachment; filename=pr103259.diff Content-Transfer-Encoding: quoted-printable =46rom 1c225608e0cabbe909cc4d6e69fb0281bb99418f Mon Sep 17 00:00:00 2001 From: Steve Kargl Date: Tue, 7 Feb 2023 20:18:42 +0100 Subject: [PATCH] Fortran: error handling of global entity appearing in COM= MON block [PR103259] gcc/fortran/ChangeLog: PR fortran/103259 * resolve.cc (resolve_common_vars): Avoid NULL pointer dereference when a symbol's location is not set. gcc/testsuite/ChangeLog: PR fortran/103259 * gfortran.dg/pr103259.f90: New test. =2D-- gcc/fortran/resolve.cc | 12 +++++++++--- gcc/testsuite/gfortran.dg/pr103259.f90 | 11 +++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/pr103259.f90 diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc index 100b2382e22..549916c2b53 100644 =2D-- a/gcc/fortran/resolve.cc +++ b/gcc/fortran/resolve.cc @@ -953,9 +953,15 @@ resolve_common_vars (gfc_common_head *common_block, b= ool named_common) { gsym =3D gfc_find_gsymbol (gfc_gsym_root, csym->name); if (gsym && (gsym->type =3D=3D GSYM_MODULE || gsym->type =3D=3D GSY= M_PROGRAM)) - gfc_error_now ("Global entity %qs at %L cannot appear in a " - "COMMON block at %L", gsym->name, - &gsym->where, &csym->common_block->where); + { + if (csym->common_block) + gfc_error_now ("Global entity %qs at %L cannot appear in a " + "COMMON block at %L", gsym->name, + &gsym->where, &csym->common_block->where); + else + gfc_error_now ("Global entity %qs at %L cannot appear in a " + "COMMON block", gsym->name, &gsym->where); + } /* gfc_add_in_common may have been called before, but the reported = errors have been ignored to continue parsing. diff --git a/gcc/testsuite/gfortran.dg/pr103259.f90 b/gcc/testsuite/gfortr= an.dg/pr103259.f90 new file mode 100644 index 00000000000..f78ff26180e =2D-- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr103259.f90 @@ -0,0 +1,11 @@ +! { dg-do compile } +! PR fortran/103259 - ICE in resolve_common_vars +! Contributed by G.Steinmetz + +module m + integer :: p + common /c/ p +end +program p ! { dg-error "cannot appear in a COMMON block" } + use m ! { dg-error "is also the name of the current program unit" } +end =2D- 2.35.3 --trekuen-6877f202-d702-42b3-8998-de88646bd212--