From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-114.mimecast.com (us-smtp-delivery-114.mimecast.com [170.10.133.114]) by sourceware.org (Postfix) with ESMTPS id 8702A3872205 for ; Tue, 13 Dec 2022 11:23:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 8702A3872205 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=labware.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=labware.com Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11lp2168.outbound.protection.outlook.com [104.47.58.168]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-498-LmsK1AALMo-ZElzGS2f1QQ-2; Tue, 13 Dec 2022 06:23:31 -0500 X-MC-Unique: LmsK1AALMo-ZElzGS2f1QQ-2 Received: from DM6PR17MB3113.namprd17.prod.outlook.com (2603:10b6:5:6::10) by CH2PR17MB3991.namprd17.prod.outlook.com (2603:10b6:610:8f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.8; Tue, 13 Dec 2022 11:23:28 +0000 Received: from DM6PR17MB3113.namprd17.prod.outlook.com ([fe80::9df4:7ed9:aca6:322e]) by DM6PR17MB3113.namprd17.prod.outlook.com ([fe80::9df4:7ed9:aca6:322e%4]) with mapi id 15.20.5880.019; Tue, 13 Dec 2022 11:23:27 +0000 From: Jan Vrany To: gdb-patches@sourceware.org CC: Jan Vrany , tom@tromey.com, luis.machado@arm.com Subject: [PATCH] gdb: fix command lookup in execute_command () Date: Tue, 13 Dec 2022 11:22:41 +0000 Message-ID: <20221213112241.621889-1-jan.vrany@labware.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <1a96057b-afd6-1e90-15c9-ee106a2998c7@arm.com> References: <1a96057b-afd6-1e90-15c9-ee106a2998c7@arm.com> X-ClientProxiedBy: LO4P265CA0184.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:311::10) To DM6PR17MB3113.namprd17.prod.outlook.com (2603:10b6:5:6::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR17MB3113:EE_|CH2PR17MB3991:EE_ X-MS-Office365-Filtering-Correlation-Id: eed56922-7478-45b3-e464-08dadcfc74e2 X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0 X-Microsoft-Antispam-Message-Info: bnuWmOOOtORswNrH+mFFrdVneX3jmVKpnifX6aPcKI3tPAHWCHnOszV4t9lbJaIaUrxy1AcxwgSpycNMnDmAFoa26P5tTy2FqI38PHIGwMVdL3Q66wd1bH3AOesFPS2h25EVeI1ZVek3sn65LSuqNYDJLwqqTlWcnYOnDES4rUJeS8Y/N2tljyaFABq6BX+SV9Dd03eMNcA+y6Cbsq41MhSuh9Zx1sheF6UGNnNyNW3H5YbPa1lKU2pq2NLWfLUt6Kw7JuNlGD7lVUD4c1neC2MULg5hrf/40lGlqsptp23v307fqdoOFUQ0fNMVldoX6IztLWAk7xQjVAPw1rWUtVl0Mr2UvHa9ir5PnWuTMj/R+Ow0i+mYn+YNG7+YE6dJ6zqJrX9ERkKGJAYKFXw3q+4R9XA4QlsZol0Im+PNO1AZF2mV+LS5oX6xMosnggMejxppYEEvBAo1TdPIAcLTcFKmAUnFdRR54vgp0WzCXj6fDhCUPQOTCLUPLbt0bDY97EXfgPikTLuYxbQHCNrtQvl8P9Vz1Mq2x8CLLaDlm9wv3IYX5DPTcU3kYARLJ0UShZiLIh6x98QdUq8g8I9gI6B7OFDiJMa+oQb/31BCLxvR6KQMHmEUfYS4jlIPGis12turRPQH1ZDi3kFEyP4J/uc+4XOjFHOrGA4i7uay9Bo= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR17MB3113.namprd17.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(376002)(346002)(136003)(39850400004)(366004)(396003)(451199015)(38100700002)(2906002)(86362001)(5660300002)(44832011)(6486002)(478600001)(6666004)(41300700001)(66556008)(8676002)(26005)(6916009)(4326008)(66476007)(83380400001)(6506007)(186003)(8936002)(6512007)(2616005)(66946007)(1076003)(316002)(36756003)(84970400001);DIR:OUT;SFP:1101 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?jHGgQnaaOl4+Lg+kSoMGMJ0AOfcqwESRtB19niZRjsqabibrewVpvQSEWjNJ?= =?us-ascii?Q?juIkbvp05ZkaFGK7T8Bw2rPd1LTJNvUA2j+WjkiKraPZm1LbeLCwfhhL0Mc9?= =?us-ascii?Q?HtzKmvEKCyD6+oNHuznXXAa4wj5p/iQfwhQf2dU51Y2ho8+jDFUK9o4EizFM?= =?us-ascii?Q?8Dy0RzODn9hyPIr5Nev/opDwlje/ToZCHw2rfoxDAOxe+g3LEPVmrhNO+Btb?= =?us-ascii?Q?YY1GzSxtOEM2qsSPOJv6MK/rf3pOtOWKQETb96sFeZ0wZddCtGWO0myqFZW9?= =?us-ascii?Q?Qofj5RqM2nPt1fdZ3irdxpWXMR8vNjm/qZx8bjCCHyNCcb0ez+NZhwwjal8y?= =?us-ascii?Q?3GEpiwBuuSEwPOICanWpm5dS0Gij66VcTHlIKIlDL9gqq2dKrOIAjNNyh89U?= =?us-ascii?Q?FM5Vp3b1kgRK2GKod1nQPFzJiwpaWqIDxVAi2NBjYRS0vM+ge8n7Qwn6uk2G?= =?us-ascii?Q?6UqrI+aQ6ysu5/qFBCL8xjSO7bCl2ua1aMYuMnL5ZZj5M75vWJ+dX8Z9AGyc?= =?us-ascii?Q?q4ebSao24lfltJHjnJbzK73vaUYUPNt/MhOixKqbcwtUzeFe9XRN0AtboYji?= =?us-ascii?Q?mpTlpvQl8cS6YQ0b1DYoIfr4sT62acGlhcSFMrs+InZafMRDaO6XcnMJVauA?= =?us-ascii?Q?64kG0ImP8SvKuDtA48yd0UYXufctRRBIz6RJtkn1OAc+ZE5INMiZVcdhMz1N?= =?us-ascii?Q?l08GqudgZpe9QJE6j4e7mDfCePAE/AAqD45v2tuN+a1wAIHurE6nOi6PUi9e?= =?us-ascii?Q?i3c44jeWo+7MxFxr3zEvOB7cxQK8OKccfV+xeqcLpdRNapiJ0i+A3TVgArfG?= =?us-ascii?Q?dl2183HUFVNK4d8q5gAhvsXkmg2QaezbrLOesirsyogXlVFQNZYoSmVCeuei?= =?us-ascii?Q?QO6F2c/f0lUtneA7Wq4qp2mCaop/L55rCl35kSbEBzA5Bs8X6itVBVxd6B1o?= =?us-ascii?Q?nxnosbj02GzxZjbXYD72wGNgTpTyUtzJRP8XzUbKyBEgLdQAwu6j+Hw/DUmG?= =?us-ascii?Q?xd7pUGba532/ibTPtMFOXRpU4I9VK6fRwU296Z2fuR3Q4I21lW1nfanCXmi7?= =?us-ascii?Q?jMlZDwITosGZ+QlEmKCWMQh6hDVcJZwO3ifJ2h7bBUvGBfAmjXfSytba6N94?= =?us-ascii?Q?r7iWgaxKUFPiZNiyRy5q7IKeRQqRFxq34PP0M6+Yhs0jqcEPuCXDVLwlu3a+?= =?us-ascii?Q?FDjU91ijYP2pKf7PgLWfn3aWTxiQG6zST+m2Jh62pW5rZHPyHHNwrLSzMM+K?= =?us-ascii?Q?kNs8GWqzMyUcpeLSGJODmwSZIj7sezclurEOlQk8wPhghDsPMsnPhHbiQsl2?= =?us-ascii?Q?0hE6Otb6jlzF1R/g7SYxDsgpYLVb9QJIykKYFR04UCPtqz3HQr8pxgHa6wAX?= =?us-ascii?Q?jhZ8Zat+KQNr2U0u8nDRfGndrfv2GH9+aesW1rxwIVHtrktJnwP1tSMmCZjv?= =?us-ascii?Q?XJPJIslaxDQrsv0wKfOnTj7y1lfFE/kDjrxm8UII6Pk6JDq6rbF1tBoPslec?= =?us-ascii?Q?s7M5Mc+/X3584UKExAE95gKoPCDIIy5GcRd4gaAV6R8LmdQFOXYGDQn2sDcN?= =?us-ascii?Q?kDrCWSNAJQKOKlLoOv5KRx/IpUgugd31w/045H3Y?= X-OriginatorOrg: labware.com X-MS-Exchange-CrossTenant-Network-Message-Id: eed56922-7478-45b3-e464-08dadcfc74e2 X-MS-Exchange-CrossTenant-AuthSource: DM6PR17MB3113.namprd17.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Dec 2022 11:23:27.8804 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b5db0322-1aa0-4c0a-859c-ad0f96966f4c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: VMerU9KApHG7NLnSZqjewK0Gb60gi2V9QcPFuJIcuvEm+SSy2MteytaEKrZbmOJr7ayDGSoCqOJdTWf6HvU2vA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR17MB3991 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: labware.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=WINDOWS-1252 X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00,GIT_PATCH_0,KAM_DMARC_STATUS,RCVD_IN_DNSWL_NONE,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: Hi, > I've spotted gdb.base/define.exp failing today, and bisection stopped in = this particular > patch. > target testsuite > one > hello > (gdb) FAIL: gdb.base/define.exp: target testsuite with hooks My fault, I did not consider the case of hooks on subcommands (I was not even conciously aware this is possible). The below patch should fix this case - with it on my system gdb.base/define.exp passes. Alternatively I may just revert the commit until better solution is found. -- >8 -- Subject: [PATCH] gdb: fix command lookup in execute_command () Commit b5661ff2 ("gdb: fix possible use-after-free when executing commands") used lookup_cmd_exact () to lookup command again after its execution to avoid possible use-after-free error. However this change broke test gdb.base/define.exp which defines a post-hook for subcommand ("target testsuite"). In this case, lookup_cmd_exact () returned NULL because there's no command 'testsuite' in top-level commands. This commit fixes this case by looking up the command again using the original command line via lookup_cmd (). --- gdb/top.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/gdb/top.c b/gdb/top.c index 742997808bd..caa08d98cec 100644 --- a/gdb/top.c +++ b/gdb/top.c @@ -655,11 +655,6 @@ execute_command (const char *p, int from_tty) =09 } =09} =20 - /* Remember name of the command. This is needed later when -=09 executing command post-hooks to handle the case when command -=09 is redefined or removed during it's execution. See below. */ - std::string c_name (c->name); - /* If this command has been pre-hooked, run the hook first. */ execute_cmd_pre_hook (c); =20 @@ -702,7 +697,8 @@ execute_command (const char *p, int from_tty) =09 We need to lookup the command again since during its execution, =09 a command may redefine itself. In this case, C pointer =09 becomes invalid so we need to look it up again. */ - c =3D lookup_cmd_exact (c_name.c_str (), cmdlist); + const char *cmd2 =3D cmd_start; + c =3D lookup_cmd (&cmd2, cmdlist, "", nullptr, 1, 1); if (c !=3D nullptr) =09execute_cmd_post_hook (c); =20 --=20 2.35.1