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 C8A673875440; Tue, 9 Mar 2021 19:45:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org C8A673875440 X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [93.207.89.21] ([93.207.89.21]) by web-mail.gmx.net (3c-app-gmx-bs50.server.lan [172.19.170.103]) (via HTTP); Tue, 9 Mar 2021 20:45:00 +0100 MIME-Version: 1.0 Message-ID: From: Harald Anlauf To: fortran , gcc-patches Subject: [PATCH] PR fortran/99205 - [10/11 Regression] Out of memory with undefined character length Content-Type: multipart/mixed; boundary=abmob-3af249ef-58f0-41d3-93e1-7ef49df5d91e Date: Tue, 9 Mar 2021 20:45:00 +0100 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:dsg+gzbQRAwsYTvOUivBzkalawRiv5MIXZvS/egpqH4AI+nckHlF1v4ME/j3ounSCP0Tk 6OKp0B6j89xD5gNfe6DLxfSxRXwhkIsayYuvEy6NtwyhFZzSm6MwtYJzeNopkPkcPaStE7wGXV1m i0T/gFxLnKzWBziAQ8tlauUhQ4ttLKCi7GYCSJvTRtjZJZiz0gdKlQmtwNMQ7iU2xMlpKMpT69BS iFkV//Ga+Y64/+mMBRUP+dxTW3A4PoNDRww3CuN1t7R0qt5daX2KJqrXdYY+ctkPjHFXcaGT3CoT fo= X-UI-Out-Filterresults: notjunk:1;V03:K0:v+bKkc6bX4A=:1lV5xrerLV/nJxSOfMOAUy EMb08uppE0ULFILwl9gzSa4FiM7GJCLmydS1Ebn/Q8kupRoI6K30OL8XyWZgkmtrlnVaa8o+r n3cFD3mMrpf9kHwo6B3QhZaQCOL0KCyrvKwB+zsch0cm+JNg/RVaz7kZycxozTxJ1ZHUFuPHx RWbo+6+rLO0ET6BluZq4lYFDtedZhX8yrxWvdQBl+FCrsL7URndkjrS8+n1MqK7XM/wPeXqKj WGJ22Ra+uhHDMt/0AdOkvbeSvHOKJtXO/eZkwweW+egR/u28Ld1V4RPkg/54sYUInas0uS3fG 2T80J6PwpdS8OjXscw1HCV21uRjZo9YLAkf6BebFPscNdWPu1nB/y5LlMZr6pVpqWrJjgQR/j +ztyLN4iVdP4xHJfYns277BJXxbKZ/2KlzIcnSYdn7g+km03ul/y3Qhku9OL3nykuu2ADJis4 /+ikkSiotprmjK4gz7vqWLmU7rcFf9u0RliqQm8bA7wWLKFtwgDH3tDEZXvCLHHpzSxU5yREb mEcXFOxD3FLk0A4Wm8xi+z2T0HRq8XqIHSyPNSx0Dgux+Apm9AVAygEhVQpzSOz8FtZavWf7K p7QlI5McW4Bgs= X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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: Tue, 09 Mar 2021 19:45:10 -0000 --abmob-3af249ef-58f0-41d3-93e1-7ef49df5d91e Content-Type: text/plain; charset=UTF-8 Dear all, character variables with undefined length are not allowed as objects in DATA statements. We better reject them. Regtested on x86_64-pc-linux-gnu. OK for master / backport? Thanks, Harald PR fortran/99205 - Out of memory with undefined character length A variable that is a data statement object shall be a designator, thus a character variable shall have a constant length. gcc/fortran/ChangeLog: PR fortran/99205 * data.c (gfc_assign_data_value): Reject non-constant character length for lvalue. gcc/testsuite/ChangeLog: PR fortran/99205 * gfortran.dg/pr99205.f90: New test. --abmob-3af249ef-58f0-41d3-93e1-7ef49df5d91e Content-Type: text/x-patch Content-Disposition: attachment; filename=pr99205.patch Content-Transfer-Encoding: quoted-printable diff --git a/gcc/fortran/data.c b/gcc/fortran/data.c index 25e97930169..71e2552025d 100644 =2D-- a/gcc/fortran/data.c +++ b/gcc/fortran/data.c @@ -595,6 +595,9 @@ gfc_assign_data_value (gfc_expr *lvalue, gfc_expr *rva= lue, mpz_t index, /* An initializer has to be constant. */ if (lvalue->ts.u.cl->length =3D=3D NULL && !(ref && ref->u.ss.lengt= h !=3D NULL)) return false; + if (lvalue->ts.u.cl->length + && lvalue->ts.u.cl->length->expr_type !=3D EXPR_CONSTANT) + return false; expr =3D create_character_initializer (init, last_ts, ref, rvalue); if (!expr) return false; diff --git a/gcc/testsuite/gfortran.dg/pr99205.f90 b/gcc/testsuite/gfortra= n.dg/pr99205.f90 new file mode 100644 index 00000000000..ed0782ce8a0 =2D-- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr99205.f90 @@ -0,0 +1,11 @@ +! { dg-do compile } +! PR fortran/99205 - Out of memory with undefined character length +! { dg-options "-w" } + +program p + character(l) :: c(2) ! { dg-error "must have constant character length"= } + data c /'a', 'b'/ + common c +end + +! { dg-error "cannot appear in the expression at" " " { target *-*-* } 6 = } --abmob-3af249ef-58f0-41d3-93e1-7ef49df5d91e--