From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11olkn2090.outbound.protection.outlook.com [40.92.19.90]) by sourceware.org (Postfix) with ESMTPS id 0986E385828A for ; Thu, 11 Aug 2022 09:12:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 0986E385828A ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fTU8NiBrnE6x3y+1R/SQng48PIZutQ/eOtj2FtF2QnhL90CKsyFwOH98TFkR1Iiqu+DHNJvOrZ3pSG6f6RRxaf7dSDt0WgzVjc75y+m18iOEt4Pmrg9zBmXNkRS3T0ouOb/C1qzREyVoRzL5PdY/n7QuDooZDsCxER+05DbF4MCz/ySDfzkVdMQyfYFAKkhSAOWFomXj0zLx99d4e4NfEP5GOj/HgbKPVpe2adltZCd7HJoHNN81hFq+kEuo74L9gex1wJKAR1fX1snZVxWdp0rEZ7CQQW7TlUB+IAHSqnqPtviYC90RO3eFUTdmWFqWAqoaKGljAniYx5Jb/aWlAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=o90g/fe/deoD4zLIktYUT055wcR0lMYzExp7lxciS6A=; b=DtBe86l62W/lJTFBKL1c2JUMHsCmh1maT6QJUoodIvD9m6od+lCIhG/d0C8D/yBaRV7X9XlHoXj1pRVNc/s6GFZxkLy/B37IR9IXotufY5eh8TGCMQWXv9yztHFi3Pz0TPu5dQfixbv12LXE8h3FAu6x8k1Aumc7RrkVAtl27b8zZKvENFmRkT4VvVOG6BlxArw1jNGMx0W9ToSvC8gq1eyhxoAaxlDcQJVfqZEh9sFSgzv29U8UWgoxSDVv+SDNqnANz0XydluqRVee+Up0Lv22BcrwiDkMCcbSK5lJulMHXXiMuxE1AoBwja5P3Afo6RBhmuQhKoDerBsBfJ5bsA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from CY4PR1801MB1910.namprd18.prod.outlook.com (2603:10b6:910:79::14) by MW4PR18MB5083.namprd18.prod.outlook.com (2603:10b6:303:1a6::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.22; Thu, 11 Aug 2022 09:12:09 +0000 Received: from CY4PR1801MB1910.namprd18.prod.outlook.com ([fe80::d1fe:5357:ddcf:a38f]) by CY4PR1801MB1910.namprd18.prod.outlook.com ([fe80::d1fe:5357:ddcf:a38f%6]) with mapi id 15.20.5504.020; Thu, 11 Aug 2022 09:12:09 +0000 From: Immad Mir To: gcc-patches@gcc.gnu.org Cc: dmalcolm@redhat.com, Immad Mir Subject: [PATCH] analyzer: fix ICE casued by dup2 in sm-fd.cc[PR106551] Date: Thu, 11 Aug 2022 14:41:45 +0530 Message-ID: X-Mailer: git-send-email 2.25.1 Reply-To: mirimnan017@gmail.com Content-Transfer-Encoding: 8bit Content-Type: text/plain X-TMN: [Fyz21643cf7pifANfMRBcz77ZGaALfwxvTAaZ1aqCXyW2HFXaULbp+vARo3W7Ogd] X-ClientProxiedBy: PN0PR01CA0032.INDPRD01.PROD.OUTLOOK.COM (2603:1096:c01:4e::22) To CY4PR1801MB1910.namprd18.prod.outlook.com (2603:10b6:910:79::14) X-Microsoft-Original-Message-ID: <20220811091145.21042-1-mirimmad@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5c1ed40f-9397-466f-fafa-08da7b79919a X-MS-Exchange-SLBlob-MailProps: zswcL9HXbeWP/3V0NiaTEfjxtEnugOofZ8ro0dbK2kzYIWoaZP9hh5Gxt4t7z5sibl1tR+yOSZhRvkkNz2djL/yT/1MT7B1B+utyMxTGqKHMh0Cuap9yZx34lX7/MOG9qgDcNQKxTnMDkj4LC+VhszHIV8L845XUmTu1LsZjwWcF4g5sd6gxv9DjWVlFT9k3YnRsNlBPABtW9FO4aMKCvDTV1TfWgpe6WqJ90F/TH5iTDelcX/a3JW84imPCLZgAJ/Q8GdZYp/sqrF33Ds2bV6cU1VsMO4vk9pxBGRyQhRAs0ETlH0kTvKIBWniXJvjk0I+awEy8gEWyXtSMVJaTbxsgGGRDV99fvoOFv8VQv5qLrKg0nEYMQYdbj76GXhDgNCnklCrH1MTi/Sss282JGC30wKicxx31psIpdBXyUXMy8VBwxm2J6dxqZqAO5Zibl2w3fdrOk37dz1BVOER2RhPLaNJTMZnN6PlkK4MS2jWK9NDFuCvfhAClj5ubfWH0c7yz8vZudOsDXpCE/BRMGj68CPm+9OEqq+aTVqJkNvfJKkrm9zscEu6iIfskB2zDtVBBkrA1IhKgXc8gEBLvLGT/w19CLaN2YGkeahavljiXEk8oo/ScBNb3CXz/ZYdNkitgMH4wOsuoDYlWKYbXqGseqlsvbCD5jltRn+3ljBoUgpRPQIytTc+lQHPZqG9DRXrUzmkR3nMFcXiLmGKHDQxl/RgnliryBR2Np/E8f3TyHSDdxSyc7eGPfltOOo+Z X-MS-TrafficTypeDiagnostic: MW4PR18MB5083:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tDyVqVIqv0AHfkmlYEaXwu0bKTWgfoWzVj+ui9Nvi2eIB61by2ENu5t2xSHwUPTAPYlkiR4RWK1KJoG0QcKfGSt8NWdR/t1Rn/+hw1g8Iogpb2SsU5prAv4gK264BRlu8X/3pv8TTmE6wNYhQKJVSO2pHUKyeYRV/JaGDEelRBrQGCg1s7cbdQRk4ZWzORwVyw4KxDatXM7AdFAdkWVEpwxX5JYgS2YWP+ClrNQEPqi1DwlOtAJoL4qEqZQDdsSsrQ2IILAlpXX7Ij6ubjxJyuDlVOceHW/lrMJ/fmwPFTU3FLN61kVN8l0mLNLogy2IupVlQ89EyTSQNwa99elRE0OUE6dMeFXcssTNnZU/OtehDN0FTTBIkJNUClgw1TdXTWNCpjLHVfBTn8j5sgmnT656+24E/lnV6LYvtxeajcN/u7hiZoeih7UE9EmHXjTw+Akpqs49cMeK2iyG7/Znlf2LglwifIvfO7oniP3flD26iLI646DHk5VKgCBqa0OrQJeAA/IJ93QEe0hbr3fiJz01UTnmvoCdqp+Jmk0/4/Xd+1OKTxvHTUnU9m97jqBUxz656G0cMbGqhSy10LCO+rho0pR7f5Dah64QVDn08u/QsZpp3nN+CkqFBuXFE/Ab X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?mKXPZG9yuSuGla+ZeytE+AgAPEuo7q6Hb5N4HnjxDsHEa1fsOYe2AwmwyUF6?= =?us-ascii?Q?g74kmT6jKva4yuExiUSiDt7WbXNo0uIV7KMn9I9sLCSp9ypUui27A9qXBtZy?= =?us-ascii?Q?fP57NCFGurtaMMdWEFD/t4LFXY7mVrik4ocu+30A89Ovs1Kazf9yiE25EACU?= =?us-ascii?Q?AjNYvWF7VL1bDMSXVrUfWLyYEmxbwlQgjdhmszVTx+DemJYv5s+q8trco3qz?= =?us-ascii?Q?k1Aplf7TiK8bIyHvL1RcclarYeH6MTXE7Iva4O+gjsJdSLGzigjo26/0PCUA?= =?us-ascii?Q?SmwR7uswzf23ihS+3dzEsXExtSRWOTkcyMiBno5/6RuTjeObY0qbN93feLQK?= =?us-ascii?Q?qNRisKR2BzGUPJliFTBmq6/GmAsCOYamgSEK9LeGD7r1dtGcxjHsWaDxnokA?= =?us-ascii?Q?ZrfNEkUUaSAifOgPtltFByoAd4NVbIvzjSIPugN5NF33uyUsPq1lyneD36qj?= =?us-ascii?Q?3/rlkhJOvxv4jYmt4A+9hc9ZM8sGyDHVpy1rIn6fSR8oMzdJo7rWysx2qJOt?= =?us-ascii?Q?Q0ePZWSJIqyWJmlJfYUqCrR4TzXq/GcIbb/FpBlf5LI3k2XjLJ6hYdDcm54l?= =?us-ascii?Q?8FlELPg6uvsxGKJlNMEmCvPKlA1Uk81XdKeXGqjsQgi/FrZKi0aMvKemO2JY?= =?us-ascii?Q?/+cHFMMle6YeWhLyN+5RZDHA7GfnaQ34ccdYvvSZgb39sclBlZ5rSeW66ASC?= =?us-ascii?Q?3+nM5bt13qI5Zj9cAgLYI30butTN+Pgg3Zn5WD1MqxOg8G1F4pWqXbPQEZLK?= =?us-ascii?Q?lkoztefsLamuDVWJvoW6tij55bKHlMIKtASYc63hVfS/mJe8HXYQoVMDvGcS?= =?us-ascii?Q?PZjTaqmgSV0/bAN2Jj62XuhP0Io2Wfh0de/npGT/iB6hyFppVsuRseEDW/mY?= =?us-ascii?Q?Zzc4eJHtrpsdv4TH0VI3XzLP8LeQPw+FZfZ6U139Znp/w6XooxO9d1qm1p1J?= =?us-ascii?Q?LcTK3jpBHxl3GpdlKKbRrscScg5tVjvb2R5Gdf1UpFysk0q4zXheXKg59V7E?= =?us-ascii?Q?DetXOTCwlVu3uIRVKDllaMbP1/JHy7S2vH54v9WGWqjhbQ+5nJyizXmePc0c?= =?us-ascii?Q?GEj0G6RCYDc5p7v1wjXgVcCaVB2XimYSXHKXOSWAv2Eh+FV9YYYQnAZ5S4hN?= =?us-ascii?Q?LXB9yzzQbCB30R/cTjR2bJy09SrOReMX0uxzsPL26Gn0FfXtjtkv5FtjPReX?= =?us-ascii?Q?bWVUthcl0srd4SPG9E1uWbsviELnL+A1eBIn75iZJuoAdELhmkqKc3CDqqOL?= =?us-ascii?Q?XB63+2MYKlDpMcRI/0TKgSKVTVUSfwpf74Ou7of/xZ0B30lk4f0oH5MeiMz6?= =?us-ascii?Q?hpDEyVkCZUn57F60ahTqGE+BA+i33uJAOEv+TO8Um5nANw=3D=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5c1ed40f-9397-466f-fafa-08da7b79919a X-MS-Exchange-CrossTenant-AuthSource: CY4PR1801MB1910.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Aug 2022 09:12:09.6239 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR18MB5083 X-Spam-Status: No, score=-11.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, FREEMAIL_REPLYTO, FREEMAIL_REPLYTO_END_DIGIT, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, 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 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-List-Received-Date: Thu, 11 Aug 2022 09:12:13 -0000 This patch fixes the ICE caused by valid_to_unchecked_state, at analyzer/sm-fd.cc by handling the m_start state in check_for_dup. Tested lightly on x86_64. gcc/analyzer/ChangeLog: PR analyzer/106551 * sm-fd.cc (check_for_dup): handle the m_start state when transitioning the state of LHS of dup, dup2 and dup3 call. gcc/testsuite/ChangeLog: * gcc.dg/analyzer/fd-dup-1.c: New testcases. * gcc.dg/analyzer/fd-uninit-1.c: Remove bogus warning. Signed-off-by: Immad Mir --- gcc/analyzer/sm-fd.cc | 10 +++++--- gcc/testsuite/gcc.dg/analyzer/fd-dup-1.c | 27 ++++++++++++++++++++- gcc/testsuite/gcc.dg/analyzer/fd-uninit-1.c | 2 -- 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/gcc/analyzer/sm-fd.cc b/gcc/analyzer/sm-fd.cc index 8bb76d72b05..e02b86baad1 100644 --- a/gcc/analyzer/sm-fd.cc +++ b/gcc/analyzer/sm-fd.cc @@ -971,7 +971,8 @@ fd_state_machine::check_for_dup (sm_context *sm_ctxt, const supernode *node, state_t state_arg_1 = sm_ctxt->get_state (stmt, arg_1); if (state_arg_1 == m_stop) return; - if (!(is_constant_fd_p (state_arg_1) || is_valid_fd_p (state_arg_1))) + if (!(is_constant_fd_p (state_arg_1) || is_valid_fd_p (state_arg_1) + || state_arg_1 == m_start)) { check_for_open_fd (sm_ctxt, node, stmt, call, callee_fndecl, DIRS_READ_WRITE); @@ -983,7 +984,7 @@ fd_state_machine::check_for_dup (sm_context *sm_ctxt, const supernode *node, case DUP_1: if (lhs) { - if (is_constant_fd_p (state_arg_1)) + if (is_constant_fd_p (state_arg_1) || state_arg_1 == m_start) sm_ctxt->set_next_state (stmt, lhs, m_unchecked_read_write); else sm_ctxt->set_next_state (stmt, lhs, @@ -999,7 +1000,8 @@ fd_state_machine::check_for_dup (sm_context *sm_ctxt, const supernode *node, if (state_arg_2 == m_stop) return; /* Check if -1 was passed as second argument to dup2. */ - if (!(is_constant_fd_p (state_arg_2) || is_valid_fd_p (state_arg_2))) + if (!(is_constant_fd_p (state_arg_2) || is_valid_fd_p (state_arg_2) + || state_arg_2 == m_start)) { sm_ctxt->warn ( node, stmt, arg_2, @@ -1011,7 +1013,7 @@ fd_state_machine::check_for_dup (sm_context *sm_ctxt, const supernode *node, file descriptor i.e the first argument. */ if (lhs) { - if (is_constant_fd_p (state_arg_1)) + if (is_constant_fd_p (state_arg_1) || state_arg_1 == m_start) sm_ctxt->set_next_state (stmt, lhs, m_unchecked_read_write); else sm_ctxt->set_next_state (stmt, lhs, diff --git a/gcc/testsuite/gcc.dg/analyzer/fd-dup-1.c b/gcc/testsuite/gcc.dg/analyzer/fd-dup-1.c index eba2570568f..b971d31b1c7 100644 --- a/gcc/testsuite/gcc.dg/analyzer/fd-dup-1.c +++ b/gcc/testsuite/gcc.dg/analyzer/fd-dup-1.c @@ -220,4 +220,29 @@ test_19 (const char *path, void *buf) close (fd); } -} \ No newline at end of file +} + +extern int m; + +void +test_20 () +{ + int fd = dup (m); + close (fd); +} + +void +test_21 () +{ + int fd = dup2 (m, 1); + close (fd); +} + +void +test_22 (int flags) +{ + int fd = dup3 (m, 1, flags); + close (fd); +} + + diff --git a/gcc/testsuite/gcc.dg/analyzer/fd-uninit-1.c b/gcc/testsuite/gcc.dg/analyzer/fd-uninit-1.c index b5b189ece98..1084d1b4da2 100644 --- a/gcc/testsuite/gcc.dg/analyzer/fd-uninit-1.c +++ b/gcc/testsuite/gcc.dg/analyzer/fd-uninit-1.c @@ -9,8 +9,6 @@ test_1 () { int m; return dup (m); /* { dg-warning "use of uninitialized value 'm'" "uninit" } */ - /* { dg-bogus "'dup' on possibly invalid file descriptor 'm'" "invalid fd false +ve" { xfail *-*-* } .-1 } */ - /* XFAIL: probably covered by fix for PR analyzer/106551. */ } int -- 2.25.1