From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11olkn2035.outbound.protection.outlook.com [40.92.19.35]) by sourceware.org (Postfix) with ESMTPS id 90E6A385AC2A for ; Wed, 10 Aug 2022 15:05:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 90E6A385AC2A ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e7tk1ldCjXDL03nx+RsoJnqeWvm74GLsOVcnUCBMFGSJpQ8F6ubIke16crmTLUZl16CFxqreZ0raoW5PQs5MbxCzZe0Ny3sseGlkJUJoWbxhuorv9HEwaN2pq92PDRvT9h02ITwWt9kShNoa1bVSX/HOozku+YvEL/v0/xUjw2CvrqDW1yVC2V7DmFbK2QhBYYLK5Ksco2De36KQFfYC5LEUciyg/fP5PQu6FicRa/mrrp21alxoiGWWf/JSCNLIa/lf+DyMOZs1lz6As3Jg0toKoFMXO1saVXmDVFU4H/UNRwF2lWtnOg2ChLajLRgfjXWDqEa5QB1VG6N6r6uNcA== 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=ihaaiyP2n1gOKj++yXpjWmufIgGNR1e3A4sNH029LuA=; b=YXl/MTbbPzbQnf6RTWV1Es0JGxiYGzVzfMrynO4VQ8hxbW6UrfkgrYfpz/Ffu19NM+OkV1QqlQRw8UbIBJPVaYsitUBDSq2TwF0QgBV6+gP/R3Zq3RidFjGDqMIKb94sC/wOsxkIXhNTrB+nDZ7TxcrHHAPd4Aq/AwGqmP7E3myhpDLxQFntziqJYWXtWCw6vDdvsP+3xnZUEjHUvr/je0q0pIn88vxL9HTY3YahYraAgeNzthLSb2nIAzyef0oQcETzKV8/9Tl+LilFsYbnNiww+sh9zybD/GBEBmkuww3/gmW+rIjaE7kPdlT2wObd4NdVlY9KTxsDcsv69gcP/g== 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 SA1PR18MB4709.namprd18.prod.outlook.com (2603:10b6:806:1d8::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5525.11; Wed, 10 Aug 2022 15:05:45 +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; Wed, 10 Aug 2022 15:05:45 +0000 From: Immad Mir To: gcc-patches@gcc.gnu.org Cc: Immad Mir Subject: [PATCH] analyzer: fix ICE casued by dup2 in sm-fd.cc[PR106551] Date: Wed, 10 Aug 2022 20:35:20 +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: [47pucbQLPNV3qQo4ko9lbAygnLoGl7skGkE5O2ahy/QTovDNK4Og3AXVRsklOOF4] X-ClientProxiedBy: PN0PR01CA0002.INDPRD01.PROD.OUTLOOK.COM (2603:1096:c01:4f::7) To CY4PR1801MB1910.namprd18.prod.outlook.com (2603:10b6:910:79::14) X-Microsoft-Original-Message-ID: <20220810150520.9711-1-mirimmad@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c6a3e08a-b000-4d2c-eaed-08da7ae1cc6a X-MS-Exchange-SLBlob-MailProps: g0UYh8+NHeW/+p/G2XGkQqUOInwWvYXc3MgY0k6Y4XfrkfFZ70Z25huzcNPST1y5kpbI9Q5xRJMfUXFEHAYeAa1yOmwnBko+Pn2kx7v37h0hk5ykiFXVBuDD5UF1RX7JM8OZc8Zeptm91C14HFnAjRQNjxnHOtsEAIN9sGPLh2U2PtVY49L3JBtQyi9uGRCbkjHgbLLxvignyh4fTb+Fvw0ZgnVLE4MuZdlLHhwbW31yKWdXyNeSzGI8OzLXkqRs/r8hIIVCHOlK7CPIrFs7+U4Kl0lBIM/aitbV4IfqXHbjk4/wvC0Ypr8AQtrlt94NQbL7dmX9ahKIlogUVoChdaJvDmDNCv3BQIL8HDtUiwxTMBWktd6tzDB+Z2XMnGHOoIZH/j/H3A4435FGt4B3ieNqvBIXBVqFY0L+6cXz/QeSWW1sdYL+DXN+P4qxluBOKz748NxqG7DiPnlL4F0KHOILXGoe/d440ht3wZSuNfrEKtcJpG6DOICNQgK/ioU8yBT28p4pWMnEkX3WWJyyTmIfRcS9ENxvcTqrz+wrJJF2gwhyEwJcuWITZPDNMCvI2xGGn8AKlmnFhjz4X9kWxcYexd1rgIhNwEO+umjczAlroHlcvk0i5axXYFxTwo4Hk3aZJp5ecd66Sa+F+gHsoo6WzOiRwxUOeU1LVoMd1EQO8N19UkZpy46O85RSK7/FdGgLvT6vZm0ZVlxbRqxb07Wd2zkpi/qTMes+1rCXouYnzbdjP48qR3T1tifYlNDfDe7m6hbHVa0= X-MS-TrafficTypeDiagnostic: SA1PR18MB4709:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: guSapkfwdw9GmKiANGyywP/Il8mLsEQ6AzM1S8Mjs9LrD2MiFNTsbN7OhjJCVNEBwcZFwl6RAGT4Sv808ub0y7KL5GkyVWRPOYiztMqjOEcFvXmovz5u5ud7dBuONzfMuC1l1js1LlX3NcVg0I+2/veeK3s6n9ScwMi2AS1/YcfGv+xdMCL7omXnGM3Vtcgp0dZ6Ei3CqHeFlU9yMxz/BOKnzFkmZe33x0fwbU85Ca1MWt7IN3xNibFzAi3XKjzlr3MQFk8V/NZmRY4z1Ra5yM+tzM6TMX7xh2vLUQXicVvqe16eebHOR3AwBnlmBVZochhuOFe9p4FtRDRRxndNxHwDhN4+YIf5IN7e+StpU5d/LsaN9lUP4GQbgrIllR/cLMEIK7V9lTeANw5xQ+yRZeR+i1UhO8DcagOcfSj9PBdkxNvLWq5puUSQxMHvBI1jhLSzlRc7uFaj0xRwZPI9WWOInu/z6x0uMRmdFur9hIN2D6fHuxovfmpaON+8tvSRF5bJ6wOeo2/4eRVdK2o8wKb/DV8eX0dvAE2/+5kXTENv90QEGYUwUy194L8yQjoXYcsTSUEJ6uV5yPxqeR4WBpCGsPww9y4mfLYWVVULWeJWFwsqmeS3Vif9reu74luc X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ldw8Np4aGXcP/f3P8Ah1XvH1jrEkcK97rU4hFv1e32ngUsIo77wg5BI4w5Zm?= =?us-ascii?Q?zpF/fEmuqzvjpiFHd1iMwG48hXowAcz95cW/p+YbO0kXL3TsvtONRjDO8FFn?= =?us-ascii?Q?xQiynHSu14ijYdxJgNhhowZjIKJBADP/cRS7+YLNmElJEwbq1fDd6NCH7Vcc?= =?us-ascii?Q?jgxWxwt48CpwyUyfu1qwvfEHIGpeciWM4YGSqjKWgyhNEl636VZ0yvUBebAe?= =?us-ascii?Q?iGcpKngQEyNK8+iRRqtFz6LxxrbeEqYRL/H3rHEGidfIYb9haIdQ591alsXS?= =?us-ascii?Q?00O/7Xj/cNg9WG63oH6q0wPNDOCFixaDaddW/TUYHMLGnGYqMjgo9Opedqb/?= =?us-ascii?Q?2i0YFJXhPWkJmGisj8gKdtSQpU6ANTtObs3uYyj2wAf43MOTk5yNaIRJuPym?= =?us-ascii?Q?/Mnd1H75HWcxwdj7uf0YfGqok3hldRT5AIvErEScSwoGraFGr22n3lgKUeea?= =?us-ascii?Q?A/vBZeiUAXMp87kDDGnpjSe44DplPo30wtrf/Fmb8P51b2ch7jcfDY7bLELQ?= =?us-ascii?Q?VYOZ4kQCA+MlSP8N49DrdgwyzJRY7TAlJdU1oaVM6IXyj+DbKaXutMIgCIbe?= =?us-ascii?Q?oXV3z14+HEepvdRXJRYk5JVj/LADwKqcrvGI8g67lR8ZmJ4zSoa7jos1DfO1?= =?us-ascii?Q?jF48G0nzSU34ae1l0uR15bDrBDxrXmpRggSZ8AvJ/aD6RXkBz1Ssu6tyzttR?= =?us-ascii?Q?GF//y1pYYVxkLLVScF2AAV7AXKqN94l8mH6gy7jZIr7/fVDwmhn6Y3CFHDZk?= =?us-ascii?Q?nqBZfRYObmS61XWRHZeZiSALiVDoPiZHEwg5SboNL3+IolLE66zDBrNno75O?= =?us-ascii?Q?Pqc2wpomz1q7lEGeBdhm5Yo5MNnsYTIqdi0UM6ITlhD9lfcln/lJcLThfSj/?= =?us-ascii?Q?hHNvKwUKhqZoD1kEybqvpVk3G/inCAT97pi5IAnlAMpSOW5BHTqrczqtlyfz?= =?us-ascii?Q?9PnUhEQvzL3bn2foBoOqoPa2sdXMirrUYK6NIlqKeTDHaKoreq4KM+fxPJY+?= =?us-ascii?Q?3gaDQWlCl2gn1KVQKfo2dWTDVRGjRgj0mqWCUqjwPhONw1y48LRkpoKrv/TC?= =?us-ascii?Q?vXJq2tXOSLyWa/X4s50rirYSaj5nihSX47+HbmkUJ9wjOFPqYBT/vo6YpIij?= =?us-ascii?Q?V/UuxZfGtQSwEtb3B4f9QijVPWzKtUGEXMQzh8W6ZXBPvdJpwA9ji/exYea4?= =?us-ascii?Q?MpdhzPZ59k2gqNJFCQEm28QhXZhMPu3ZmUBeS2qPI2fNPLwEhWr9+K/zgshE?= =?us-ascii?Q?76igKEvuwUG3fcw4S9937jNZSS5yF6vZt2yoLOraZ66T52F14LPeH/Xwdn4D?= =?us-ascii?Q?NPVr8q4piVSWfpCKHu2MhTSaxLQ5n7fzDr4fAesDA9ALLw=3D=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c6a3e08a-b000-4d2c-eaed-08da7ae1cc6a X-MS-Exchange-CrossTenant-AuthSource: CY4PR1801MB1910.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Aug 2022 15:05:45.0885 (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: SA1PR18MB4709 X-Spam-Status: No, score=-11.9 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: Wed, 10 Aug 2022 15:05:48 -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. Signed-off-by: Immad Mir --- gcc/analyzer/sm-fd.cc | 4 ++-- gcc/testsuite/gcc.dg/analyzer/fd-dup-1.c | 27 +++++++++++++++++++++++- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/gcc/analyzer/sm-fd.cc b/gcc/analyzer/sm-fd.cc index 8bb76d72b05..c8b9930a7b6 100644 --- a/gcc/analyzer/sm-fd.cc +++ b/gcc/analyzer/sm-fd.cc @@ -983,7 +983,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, @@ -1011,7 +1011,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..bc823d1ce4e 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); /* { dg-warning "'dup' on possibly invalid file descriptor 'm'" } */ + close (fd); +} + +void +test_21 () +{ + int fd = dup2 (m, 1); /* { dg-warning "'dup2' on possibly invalid file descriptor 'm'" } */ + close (fd); +} + +void +test_22 (int flags) +{ + int fd = dup3 (m, 1, flags); /* { dg-warning "'dup3' on possibly invalid file descriptor 'm'" } */ + close (fd); +} + + -- 2.25.1