From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id MZSQN6otRWpLRiEAWB0awg (envelope-from ) for ; Wed, 01 Jul 2026 11:09:30 -0400 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=amd.com header.i=@amd.com header.a=rsa-sha256 header.s=selector1 header.b=AKi2Hd0K; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id DBC741E098; Wed, 01 Jul 2026 11:09:30 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [IPv6:2620:52:6:3111::32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id DEE611E024 for ; Wed, 01 Jul 2026 11:09:29 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id B19C34BA2E26 for ; Wed, 1 Jul 2026 15:09:28 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B19C34BA2E26 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=amd.com header.i=@amd.com header.a=rsa-sha256 header.s=selector1 header.b=AKi2Hd0K Received: from BL2PR02CU003.outbound.protection.outlook.com (mail-eastusazlp17011000f.outbound.protection.outlook.com [IPv6:2a01:111:f403:c100::f]) by sourceware.org (Postfix) with ESMTPS id 710B94BA2E15 for ; Wed, 1 Jul 2026 15:09:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 710B94BA2E15 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=amd.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 710B94BA2E15 Authentication-Results: sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:c100::f ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1782918541; cv=pass; b=mW24bJqYjY/zwlaPaWo2kMKq0PKN20lNGw04sbdxL8EacLOyILm/yKSB3sNWUrCYg20MVu3Ch9MH9jFYcNQRNhAKp3QlWijt0fh6Vpnb8pbwBJw4eD82vSH4QwLCRTb2iWe/UHVxIaM+hGJ/VJJyFBV2Qo09Lk96QoXWYs40iCE= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1782918541; c=relaxed/simple; bh=Ug0V340fcyLGUOWjAyG/nIcmGeLl040s6oX7NnJ+y4k=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=rMrIq33Z/NNjuc/gfMCfeAT5mi0S5M30S5WVWkKipZvxINf0JR1tx5LaA0qn05wxcI81opOWIpdo4vHsF93Eb4y39i33SD0FRHuwCi7Ndfisy6IeTMCCnzu5jCuVoTCZpeZ2SmLfd+3Xd8NzV9dOtmSHrwqBBlVC7glxwYAuIh8= ARC-Authentication-Results: i=2; sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=amd.com header.i=@amd.com header.a=rsa-sha256 header.s=selector1 header.b=AKi2Hd0K DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 710B94BA2E15 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WmoYJU9Hw84OpArCLAConm/bjwaH8KWPMCaJaMtwTju9HEcqFe/HRjR1iRuzzE4gM3/RBUxH4r4DnwhWm0KSsXfCEScjCFJB6tpNKL5gXnUCM42U8bN7QJaEZw9owj425Jy+XqmcZMSg8wf9hjlmRZAO84Dj1wZWy5SPkSGd7ukp9P0I5LsM+1lPnThR1JxCsneLIu9XNyoeAsRbdu7791D9tLAbWTBgyEa6ZOmy6Gnk5AU6X4fgllRdKVMws9mtupLhWmhQ9gzihgg0CScVfzE21ura31pvuUsBwFSNcFfQxCoIRXmf86+EDczVLXT2bOKWAYKhuT+yg/b3A3aiEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=lD/CPJN49uil1VnPQU1XTGmxMlUOdBu62ieubTJg+Ag=; b=dLTcKV2tynERNjV/hFkPVuD8g6YTSYui3OazHJUjZy9YpqWfT5r3UG0k9bKsO/feJERvnug/OaiwLyR9eRgq5pV5TJZ1t5UipPEUK+21AmZ/89CQdXnw5tQsc9bvUVYpMQqfW0Q7/F9LYom9ilS4QHRIZ0l5rZMIZrj0cVqypRTq06x3TB80xIX69AIeeHdK2pyxYgUjG2Zn3oxz90FGmeMBN9vobkHVIfGPh+cMJYAmrySiIHjkM9ZwXaDx4g/BNe9GUUysw5YqK+qBZQgfZjQ6PS0Wp8p/njjc7bLzviWxQL0b2dIb3IZlPor0RuFXbIycC+k+3VP972Vemstc4Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lD/CPJN49uil1VnPQU1XTGmxMlUOdBu62ieubTJg+Ag=; b=AKi2Hd0KQ4zZAumJlRw5TmrYYACYlrWeJj8DPxZYlaQtV9u1Uh6JSJ6+Brk7sK1CusvysAJ5m3DHtDaj3Zrl2GBWlXJitMHLX4Obc2Kdn/FPfesWayTd2uSfw77OsFgjkB5kBYSPP5AtfEG5ciPq+Z/3iruwRD/VXtIe9fTpvwY= Received: from BN7PPF915F74166.namprd12.prod.outlook.com (2603:10b6:40f:fc02::6d9) by IA1PR12MB8224.namprd12.prod.outlook.com (2603:10b6:208:3f9::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.181.8; Wed, 1 Jul 2026 15:08:53 +0000 Received: from BN7PPF915F74166.namprd12.prod.outlook.com ([fe80::90df:398f:b262:5a6]) by BN7PPF915F74166.namprd12.prod.outlook.com ([fe80::90df:398f:b262:5a6%5]) with mapi id 15.21.0181.008; Wed, 1 Jul 2026 15:08:52 +0000 From: "Machado, Luis" To: Pedro Alves , "gdb-patches@sourceware.org" Subject: Re: [PATCH] gdb: replace alloca with gdb::char_vector in remote-fileio.c Thread-Topic: [PATCH] gdb: replace alloca with gdb::char_vector in remote-fileio.c Thread-Index: AQHdCHZBIVLf7Y1V6kucjMIUxpvD/LZYozsAgAAinAM= Date: Wed, 1 Jul 2026 15:08:52 +0000 Message-ID: References: <20260630095238.1700797-1-luis.machado@amd.com> <519bd2f3-243e-42c3-a122-4edbb757878b@palves.net> In-Reply-To: <519bd2f3-243e-42c3-a122-4edbb757878b@palves.net> Accept-Language: en-150, en-US Content-Language: aa X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_198e8dea-a4f3-4850-b16a-fd6d2b1302b4_Enabled=True; MSIP_Label_198e8dea-a4f3-4850-b16a-fd6d2b1302b4_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; MSIP_Label_198e8dea-a4f3-4850-b16a-fd6d2b1302b4_SetDate=2026-07-01T15:08:52.369Z; MSIP_Label_198e8dea-a4f3-4850-b16a-fd6d2b1302b4_Name=AMD General; MSIP_Label_198e8dea-a4f3-4850-b16a-fd6d2b1302b4_ContentBits=1; MSIP_Label_198e8dea-a4f3-4850-b16a-fd6d2b1302b4_Method=Standard; authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BN7PPF915F74166:EE_|IA1PR12MB8224:EE_ x-ms-office365-filtering-correlation-id: 1bd9ae18-37ca-414d-6840-08ded782a9d1 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|376014|1800799024|23010399003|18002099003|22082099003|4143699003|38070700021|6133799003|56012099006|11063799006; x-microsoft-antispam-message-info: oV9YBdhFfVX4WFTL7/PMXAuAjIulC9sWP+AYV6vwyv6LYHrPkv8qfwtQJ/lPab3eaB1cqtJDTRBVVKIk8W7VxXuIXIafrWQbMQ0f935ZG4Mbei3lC9bIDroFj43Svs7pgW7UTAEg096dgcymAp1UGXO018ux6D7kbuUS29PrwnSuovdGuBhmF5x593FnKPl0BjxLvqboETNR221LQDNgb5y7hLsseNLYOH/jAz4M0CYMiYoe8GomHJfPAh41O/KodvPy0tKDKEq/08tuthXRU3+f0kTiLgtMcWqnGUCzsNcY+LeHiOFjZgDQhcO84ugeRP2tzQ1SXQbrub4GcrUS4h+eEgSQIUfWCh7G09LttYKZ0RE+UXcgNYKs1XK6625A+NqQzJ2l3jJSYZn/C5Arl1loIKniQTmsNFuYErixvqjz1PeKM8zqlGckbv2qkfe0DBGrg6wL4ElGaYS9lGrXT2Kge3MxyNM+wBgom/Hhm8teW0v05k9b1bCkZr8mNZB/rP1HTvT6c+LM2X44Nbb7zGWt8L6bu4CSe7I2y8CIoxeRptH1V7c6FyscQgKIN1LJ2tEsl+eZ5ZM2mb/VNkesNSoamVR1hQsKHaFFFtkzblD0ZFY/QO+2WLYAiVCR+1/6CRkDrEQWyfwbXhdGINd1tZz0mT/rj1plHC2gTeIgeNBkTY8sVR1/8o5fQAlDf7xTQmaGWvUGR5ZN3N/dAmwjjga8xXO/iL99IAsEuy1twpc= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN7PPF915F74166.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(1800799024)(23010399003)(18002099003)(22082099003)(4143699003)(38070700021)(6133799003)(56012099006)(11063799006); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?7qlma0wub77+8BVyYCUTaOOMcB7nSChEfA6kBa1vp3EzjYEOh8gOGh0bfESy?= =?us-ascii?Q?0mwSmyT0P78NVbQ+LaIyGKERVBuMUJaalDacIUPwJTFxbXgRzI764R7+oNtH?= =?us-ascii?Q?eBnSNBRibGt/9/VAPIQZFlKSo/ZfbRVe3uNgYaMzwfr1wbw/3+zl2qryYZWy?= =?us-ascii?Q?EexQjEEJkRRWkuS5NM4OhsxOz6nNsqN4SO1zVWwG8Umkzu9N9AV7wpPK6X2d?= =?us-ascii?Q?CVM0j9BZAY2QNHww89NLCBJsnpOcchic+MQ6ijyL8S6hADM817Sr/OparaQp?= =?us-ascii?Q?r63vReEtBbSXiVmZUnZRFW0y5deRuIbaKIw/EkL0xaqzAopliZAYT1iVcgoE?= =?us-ascii?Q?UNuwW/2KLAcKkn/NukZhbiiBBkly3Sc7fJGLwhg45rOi/RSQpI4D5ChfTvkh?= =?us-ascii?Q?fm1xrF3ZDVjAT8AtsunpZ06NdacMP52NX8qvU86qBa2zIqy86Pby+GSbNkaj?= =?us-ascii?Q?AX+VmcF+jzFpMljTFP6rLVzaPgQ/jGsle33dnJsv9hU9AYaIFk6MINwmTVpg?= =?us-ascii?Q?SGKvNp/iLqzGqSZM9kgS5Lvu77CVMSNpz300f7U/64d7CUo3HjBzWVYmxkb/?= =?us-ascii?Q?7Xbz2p0pS2ZoP0n0KCnoS3tl9WmA0ea1qcPhIZnbK4U6usFVFOoLtakP2bpu?= =?us-ascii?Q?EWPLw2GhyVbeNiYDLmgglZvu7m/aogjoausFOKI04E8NGsreLPyDsnlTRCUG?= =?us-ascii?Q?yMs6P/KEMm4SLwHfdsN5xPkkkLfuRocfRp/TcNhBoHQcxiD0K6tCpdIH0HJX?= =?us-ascii?Q?m4bsfnHfORD0r2hi3fgIulkpauox3ix5VfPchqw1L4rOC/319PVNEZxNUff6?= =?us-ascii?Q?wilKFugE7wW777bbG4U5S3ncqYk/jFOafY8n9n87XP4B+bzDoMBwL2I0HnHH?= =?us-ascii?Q?GHjPjpxk2NAhgL+CQmol50rvhqg/hxvl8y9ZU10PI9XRuv8rDOgzYcoy1OI+?= =?us-ascii?Q?w/dpRr6XYtNwMcr0z6mO6LGp8NTo2eW+bx8MHlWSBSMm7KxyEeaAhgGOCXgg?= =?us-ascii?Q?K1pQ2mhTnm6dRoU5ZcL83TaZqo0nhvEc3JbM4U+1k9pvOKIU9QYpQiwdIMnB?= =?us-ascii?Q?34BhWYd19Argxp2CctvcPtLW8avY3yEhVYIU/qOZibAkq0kL/fHaWiZa91K5?= =?us-ascii?Q?jZQPi1/Lernlf1TpF90RKleWck3x7p0koE1aLolsCzkCuVoDQ370f7YVvzMO?= =?us-ascii?Q?5Ch1WqjSWig0yu+XonwZNmgQCHh61MUBcaE1oElRYJ1jw6nuOKewbYrm548D?= =?us-ascii?Q?7QRNEPMJB8LrLFtGycVlL9jna6G+TvOkCyFimmhYtTl1sixv5C4MqkhrbJw9?= =?us-ascii?Q?qdpzCnJvqaLmyT5dfpibKteQ+7ytH2W/PKuwwGZOJHb80lUTmnuCw7d5G8fU?= =?us-ascii?Q?phmr3U01qFTMYP7nRsKgh6QRUMHIPfH8n/5ctou57hf3vVIPWhH3dH1S3i2P?= =?us-ascii?Q?dmMF/bTdQ7ztoF9b8hyTJRgXyS4J5yFAtNnsZRqMVXEpTmrpFoR5h8yCgRCn?= =?us-ascii?Q?mPMGvThwSkm10clex6B1gfBD45uhxyjwh1YNAGnjLxdusfkYJ12NuSHyv2Z6?= =?us-ascii?Q?uL7a912SCEOlFm6RyQPgVks6nF5nCPQTZrT92tmndxKeL7dKP/VyZ3bNK/HE?= =?us-ascii?Q?0LBMyopuT+CHwkgAKtWRs/1AUz0QgdolkqG3rwYT2N+X+PxcKWl4WLfXJKDf?= =?us-ascii?Q?rjyuXMZgV3bOOoj57hTdT3ETGLtRZZC/1UegQP6ck1iC/e5e?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN7PPF915F74166.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1bd9ae18-37ca-414d-6840-08ded782a9d1 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Jul 2026 15:08:52.7790 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: lloNghXVo9tn4lfmp7rOpvX1iDYs/apE7nwqEdOda8lZAwY7+EWlGb0+qd2L5aEfKM40b0T/4HbdKW0z7A7zQg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB8224 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org Thanks. Good points. Sent a v2 now using gdb::unique_xmalloc_ptr and = adjusted the selftests some.=0A= =0A= ________________________________________=0A= From: Pedro Alves =0A= Sent: Wednesday, 1 July 2026 14:03=0A= To: Machado, Luis; gdb-patches@sourceware.org=0A= Subject: Re: [PATCH] gdb: replace alloca with gdb::char_vector in remote-fi= leio.c=0A= =0A= Caution: This message originated from an External Source. Use proper cautio= n when opening attachments, clicking links, or responding.=0A= =0A= =0A= On 2026-06-30 10:52, Luis Machado wrote:=0A= =0A= > static int=0A= > -remote_fileio_extract_ptr_w_len (char **buf, CORE_ADDR *ptrval, int *len= gth)=0A= > +remote_fileio_extract_ptr_w_len (char **buf, CORE_ADDR *ptrval, int *len= gth,=0A= > + bool allow_zero_length =3D false)=0A= > {=0A= > char *c;=0A= > LONGEST retlong;=0A= > @@ -211,6 +215,11 @@ remote_fileio_extract_ptr_w_len (char **buf, CORE_AD= DR *ptrval, int *length)=0A= > *buf =3D c;=0A= > if (remote_fileio_extract_long (buf, &retlong))=0A= > return -1;=0A= > + /* Reject negative lengths, zero (unless the caller permits it for the= =0A= > + Fsystem NULL-cmdline sentinel), and lengths above PATH_MAX to preve= nt=0A= > + out-of-bounds memory reads or oversized heap allocations. */=0A= > + if (retlong < 0 || (!allow_zero_length && retlong =3D=3D 0) || retlong= > PATH_MAX)=0A= > + return -1;=0A= =0A= =0A= PATH_MAX is NOT guaranteed to exist. It's a portability hazard. Note how = the only place in=0A= common code that uses it, in inf-child.c, has "#if defined (PATH_MAX)" guar= ding it.=0A= The uses in remote-fileio.c itself are guarded by __CYGWIN__.=0A= =0A= POSIX allows PATH_MAX to be undefined when the limit is indeterminate. GNU= /Hurd is the canonical case,=0A= it has no PATH_MAX at all.=0A= =0A= On Windows, there's MAX_PATH (not a typo, it's really the reserve word orde= r of PATH_MAX), defined as 260,=0A= though syscalls allow more than that. gnulib's import/pathmax.h does give = us PATH_MAX on Windows (but not=0A= on Hurd, see comments there), but also defined as 260.=0A= =0A= On macOS PATH_MAX is 1024, but some syscalls accept longer.=0A= =0A= Etc.=0A= =0A= The GNU conventions is just to not code a limit, and use dynamic allocation= . The patch already switches=0A= from alloca to the heap, so we can just drop the PATH_MAX cap. The buffers= are transient and=0A= passed to open, stat etc. syscalls immediately, and release immediately. T= he syscalls fail with ENAMETOOLONG=0A= if truly passed a too-long name, so the cap adds zero safety.=0A= =0A= =0A= > *length =3D (int) retlong;=0A= > return 0;=0A= > }=0A= > @@ -305,7 +314,6 @@ remote_fileio_func_open (remote_target *remote, char = *buf)=0A= > long num;=0A= > int flags, fd;=0A= > mode_t mode;=0A= > - char *pathname;=0A= > struct stat st;=0A= >=0A= > /* 1. Parameter: Ptr to pathname / length incl. trailing zero. */=0A= > @@ -339,8 +347,8 @@ remote_fileio_func_open (remote_target *remote, char = *buf)=0A= > }=0A= >=0A= > /* Request pathname. */=0A= > - pathname =3D (char *) alloca (length);=0A= > - if (target_read_memory (ptrval, (gdb_byte *) pathname, length) !=3D 0)= =0A= > + gdb::char_vector pathname (length);=0A= =0A= "pathname" never needs to be resized, so std::vector adds a bit of useless = weight (it needs to=0A= track storage vs size separately, etc.). Make it a gdb::unique_xmalloc_ptr= instead.=0A= That's the only change needed, all the rest of the code will work the same.= =0A= =0A= (Ditto for all the other instances. You do have one resize call further be= low, but that's=0A= not a real resize, it's still just initialization.)=0A= =0A= =0A=