From patchwork Thu Sep 15 20:51:32 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Harald Anlauf X-Patchwork-Id: 1678426 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.a=rsa-sha256 header.s=default header.b=vQjNMfsA; dkim-atps=neutral Received: from sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4MT8XF4nbSz1yp3 for ; Fri, 16 Sep 2022 06:52:12 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 3914D381FE62 for ; Thu, 15 Sep 2022 20:52:10 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3914D381FE62 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1663275130; bh=I1dOkrlkZxWE+vuhQXTMLD1x/MMtuYhd4IVc3CMfchk=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=vQjNMfsAOjw2TYfcraoPXHoz8pYEAV+bxxAmiObg1CHBlsyje12LQ79oLvxPM+QAA stl/W76FuIqYb9uOweQKhVYsNxP6rqwDQroZZSXlLpTjwayU30sHHZsQ1WpKStarh4 eOMiIjMM3APcNUZcZ8wWXKxGRaQp+etthoWHhAXI= 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.15.18]) by sourceware.org (Postfix) with ESMTPS id B3F3F381FE4A; Thu, 15 Sep 2022 20:51:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B3F3F381FE4A X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [93.207.80.54] ([93.207.80.54]) by web-mail.gmx.net (3c-app-gmx-bs27.server.lan [172.19.170.79]) (via HTTP); Thu, 15 Sep 2022 22:51:32 +0200 MIME-Version: 1.0 Message-ID: To: fortran , gcc-patches Subject: [PATCH, committed] Fortran: catch NULL pointer dereferences while simplifying PACK [PR106857] Date: Thu, 15 Sep 2022 22:51:32 +0200 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:5nNn1G6XD4EvKr9DLN9nHAM35Wl2/XIMqAXP1gNa2RKZykn53DQ3HlFysFvce8t1LB85J AOnaVAN1sGN4JZ3eZjRpV/F3/8WrMszC0RBr3YTH6vGr0HfynIx7QaAvfvSQxYdvhXH1pAe2w5N3 Q+0qe4swIwxRpVu03UgTUBOx5NP2/F+mAno4JskWiuFXCWAFM7SlapD1ou9f2AcVox5KBADmUB6u 63I6njeAyjNQM4Fl+yytcgwkqIYVBdGj6Afqp2M/5zMzUp+fySlyfFvvn4yapnDI2IrE7aDitGXq 8c= X-UI-Out-Filterresults: notjunk:1;V03:K0:q8HfCOcvPOg=:+NLNR1VJmXEmrV/HhqN3oY 7N7X6edy5tOhPh9IS/51dnEk+Xcjv6cM/zD+LqK+pihQYZs6Fe6h9BaJY04kYGsAFUmXav93P f3AXtFwW5WRjvb1QIBsTdjFy4DlOnEL0ZlShFxFwJJmlK8m71Tf0utJ3NVdXR074Hat+Hoa0E 0y9rcyceKkflfHc796AbmgneCwwxIZYMpJD9ma0Egd9Z4zGnhbDCFUeorHi6ayu8leUmPkGvw lNlxrjLYUxaaQ73hSsNOlQqruM2pVg56mRMU8kiSCpE2KqdLW2gLDI72sJYFNHbpk0ew4e0fQ eBFH1UJ6wBxk4ZvDJFYf3eKFKBKmb28DI6YTImty9lMEntfBLFfcVN6Kb9Dbx8AroeXvZvfvv C2trnAbf06eHV1yZGoQFkGq9sDCNZGHJyj3wzHG6SMl6gyEakAopa1bvc+d15deQ9LQ8inYvH L0beBTX9QhLrCaWpI8201vWLOkKQxx9Yk9QeUFjH2VnjHhbh8fJYpmuCBl7FTAGb9ZaYxRxNI HGtRMjaYVmQu+JHl0Zy70KCqvyjEufR9uvg/l2Kw4PJxCfI1Hkfv9emnFBFfl/AK3aOEwgHra 9QuR/BIm/QzPvrFMMtuXcMguJxZPFHYb3Do12oXG2pWYJhSK2ObZ753gSCUf1PL6G9dQHbTtm GjZGJFIqzPS2z92qP91gDTghFn7mIaCfXHawKlHy0hF99j9hqNnLNe3S4bZUSUYwwl1TKNb6m DAGyYfUB9e5bxif32lktCwiLFlYyLVYX7ZSDfNBHI8YvYNB0O/EALsb+Ybso51fcowGJ0PNKh qpJkzq8 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.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) 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+incoming=patchwork.ozlabs.org@gcc.gnu.org Sender: "Gcc-patches" Dear all, we hit a NULL pointer dereference when trying to simplify PACK when the MASK argument was present. The obvious and trivial solution is to check for NULL pointer dereferences why looking at the constructor for the ARRAY argument, which we already do in the case the MASK is not present. Committed to mainline after regtesting on x86_64-pc-linux-gnu as commit r13-2691-g2b75d5f533b9d6b39f4055949aff64ed0d22dd24 This is a 10/11/12/13 regression, so I will check if it can be backported. Thanks, Harald From 2b75d5f533b9d6b39f4055949aff64ed0d22dd24 Mon Sep 17 00:00:00 2001 From: Harald Anlauf Date: Thu, 15 Sep 2022 22:39:24 +0200 Subject: [PATCH] Fortran: catch NULL pointer dereferences while simplifying PACK [PR106857] gcc/fortran/ChangeLog: PR fortran/106857 * simplify.cc (gfc_simplify_pack): Check for NULL pointer dereferences while walking through constructors (error recovery). gcc/testsuite/ChangeLog: PR fortran/106857 * gfortran.dg/pr106857.f90: New test. --- gcc/fortran/simplify.cc | 2 +- gcc/testsuite/gfortran.dg/pr106857.f90 | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/pr106857.f90 diff --git a/gcc/fortran/simplify.cc b/gcc/fortran/simplify.cc index bc178d54891..140c17721a7 100644 --- a/gcc/fortran/simplify.cc +++ b/gcc/fortran/simplify.cc @@ -6431,7 +6431,7 @@ gfc_simplify_pack (gfc_expr *array, gfc_expr *mask, gfc_expr *vector) /* Copy only those elements of ARRAY to RESULT whose MASK equals .TRUE.. */ mask_ctor = gfc_constructor_first (mask->value.constructor); - while (mask_ctor) + while (mask_ctor && array_ctor) { if (mask_ctor->expr->value.logical) { diff --git a/gcc/testsuite/gfortran.dg/pr106857.f90 b/gcc/testsuite/gfortran.dg/pr106857.f90 new file mode 100644 index 00000000000..4b0f86a75a6 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr106857.f90 @@ -0,0 +1,12 @@ +! { dg-do compile } +! PR fortran/106857 - ICE in gfc_simplify_pack +! Contributed by G.Steinmetz + +program p + type t + integer :: n + end type + type(t), parameter :: a(2,2) = t(1) + type(t), parameter :: b(4) = reshape(a, [2]) ! { dg-error "Different shape" } + type(t), parameter :: c(2) = pack(b, [.false.,.true.,.false.,.true.]) ! { dg-error "Different shape" } +end -- 2.35.3