Message ID | 20250112210051.1545556-1-jan.vrany@labware.com |
---|---|
State | New |
Headers |
Return-Path: <gdb-patches-bounces~patchwork=sourceware.org@sourceware.org> X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 20DE1385782C for <patchwork@sourceware.org>; Sun, 12 Jan 2025 21:02:27 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 20DE1385782C X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from us-smtp-delivery-114.mimecast.com (us-smtp-delivery-114.mimecast.com [170.10.129.114]) by sourceware.org (Postfix) with ESMTP id 87C823857710 for <gdb-patches@sourceware.org>; Sun, 12 Jan 2025 21:01:39 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 87C823857710 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=labware.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=labware.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 87C823857710 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.129.114 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1736715699; cv=none; b=YvD/ENAVJArMMDaNM/UXQB0zCvFooOxUYHYXdRiZ7JepcRgjHeZuzUyn2ByMGUDbT1016LW2QQkA5V+t/IXMIgJAwfxXDMHXEqWV896nEourhmcQ3VMWUTlu3Gyg47HAuKmb2jcGUlC4gI/5gjq9ny/JwCKuQYp+dYfcHTSgDpY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1736715699; c=relaxed/simple; bh=MpDR7O5CurI+jNW7vn80hmJgagzLK7soGpb4YwwJf7k=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=vXCRaRULKNkSoGDmfdajYy0mMrFdCpJB7kOf4pS9dPWQpIGMNWsEhZx5sB9W6JTJsI8WSmLCZNMfkJKdw3Ny1Rm8e83TFzVMCWwzoWwm2BpSOwYuOQ4N3jTDS/7X56FFgnsKrypMe9i4KP9DNKxbxe8i1eW4FaXJ8a3Ai/fLJGo= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 87C823857710 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2170.outbound.protection.outlook.com [104.47.59.170]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-379-iuerbcbONyydabgz13eZLg-1; Sun, 12 Jan 2025 16:01:37 -0500 X-MC-Unique: iuerbcbONyydabgz13eZLg-1 X-Mimecast-MFC-AGG-ID: iuerbcbONyydabgz13eZLg Received: from SA0PR17MB4314.namprd17.prod.outlook.com (2603:10b6:806:e7::16) by DM6PR17MB3836.namprd17.prod.outlook.com (2603:10b6:5:259::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8335.17; Sun, 12 Jan 2025 21:01:34 +0000 Received: from SA0PR17MB4314.namprd17.prod.outlook.com ([fe80::38a7:a6f2:3b95:bc26]) by SA0PR17MB4314.namprd17.prod.outlook.com ([fe80::38a7:a6f2:3b95:bc26%4]) with mapi id 15.20.8335.017; Sun, 12 Jan 2025 21:01:34 +0000 From: Jan Vrany <jan.vrany@labware.com> To: gdb-patches@sourceware.org CC: thiago.bauermann@linaro.org, Jan Vrany <jan.vrany@labware.com> Subject: [PATCH] gdb: fix wrong buffer size passed to jit_unwind_reg_get_impl Date: Sun, 12 Jan 2025 21:00:51 +0000 Message-ID: <20250112210051.1545556-1-jan.vrany@labware.com> X-Mailer: git-send-email 2.45.2 X-ClientProxiedBy: LO2P265CA0464.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a2::20) To SA0PR17MB4314.namprd17.prod.outlook.com (2603:10b6:806:e7::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA0PR17MB4314:EE_|DM6PR17MB3836:EE_ X-MS-Office365-Filtering-Correlation-Id: 35fcba3e-8871-40e7-fe69-08dd334c4bdf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016 X-Microsoft-Antispam-Message-Info: IRplrAwFqxMRh7q2vlXgcRrm4XfX+t+b7WtxfjfgjQXKJBC8YSJAFg8gHG6+GRls/H3KJzeaU72+x2PeuEA72vVs8ZsQn5imxsRpN6I5TT9AQO2BXtEEYhtOyp8USEIsHq3vWQKcua7inM4CmaHBkH00LbLO401idbFoi8uanX4vXvhaI2iUbyL1teDwS17aUR6IcrLrxN2mxkYe4+E8Q7wxIXKYruWD084xA3m9cfs3jcCFBJDyiMQlnBJRpq4mOC5xAvZyQO4fJlvtaOzMh0sdPRX+NU57oDezxIsOrlraMi1nRsNfAd83wTxhgmkI0BlfKygYXFZ3V2tsa/wCxR86IrOW1jvkXzz53wPVBYM6hi0it9gw28Y4537TNTIJvzmM+f5ImJA0R8H1+lH9W21BSKOP/TF7771iTjJ5FMxELp5xry3Akt9QyvBwjn1Ks+wuHwn3bcNY4O+o7hGwbkw9vmgMUOqGTm38DHvwMUBloJKOTG09J3/gCCmRTOBt8IwAzXEUmXv4W0utgIvXDIA4CADCiPI1eg8/HFgrgacwfnegrTVuyrxDs4nji7xXrJFng8J8tSVi77gSiTmK2vuUM5qz+LE03c+rpSqEctuJue6FeDKoEuKaop06gNIgpPmiXgfLOfa8KvOQUaFPPw37ZEHPa788YprtwqrwBO6LHe2SuxL1AY9jr0QQyP1UdZAQUWw7c/bVKT44OtzwuhF3GDNYlQtojK6cyNl4zZhYl0gBB92ZeJH6qWQO0FXCWZetMK6NiZKmiA1hFG1TVvxk3kXqJgOTvqw61F5sTb68ycOFhqPYH8LAGQvcqPGnlYd4NuqIFCKj0zJmPKaBlSvVboxYs9fMU7GGY3VW1vw6vHOzxeToGgVsssoGsfQ5qtxkQQg7TtaucTSUYVBJP0Q2JFQE6wfZ/J7Oyp/WnVG65DMm1r4+3V51UQFcer2QIGxwagxWdQACfKSa19fbzz0hl0CXdzeqCiyouUU7hftFdT8uO6IAFG5BpAa9TjwgXWlHrddwxK912bbcaFRessSS3381Bl5OMdF2w5E+fRVco9oitCKv2Yt6Tn1K9kObDbsPKV1O+YzuQu7ds8c/IgGapI9fKM+4TnaFA0pcdDSyPOJ/a07dia9gUQtkovfZva6tvIegA1m/kzwA+AQ21CfAqOpZvSFQGZ+kjTX0AeIR0OWaHvV8/aIT1GbGhidbu/Fbjoqg6XbQTIVnMlzKJlpB3g+AYmihJCyMXG2/yYwxtsfpQbHDk3HZ940gMfUFhiMrsCf632zzrFK5q/c54ATmFD9FK2T7ZuDkp2IHg6UYNMgTiY+uuwl+WKCbCv2OgoQEqHI/scjyzQEk1PuExQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SA0PR17MB4314.namprd17.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016); DIR:OUT; SFP:1102 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 2vapaBSELU//+FpxO9oiDXHFSIsBKbZ2BiXrZGZmvc6YZzed532gFQN4jV88t+wzBJepsF1Pl3lRq09azDmC7ARwZCrvc6XrvrfhLXT2n5bR+vOgi2M8E0DDkbxZeTV20AkpJ0+C7e9y3twe90YspHCcZVxmtyeU3Vr/sYDfNr6gqgXcCTS/VyymEd/kH8bVnm35F2bDbPZj0rwIv8/fgRJEzYnB/g74jAUsKZBYAkuu0t9xYf2QG4/M/uqzvWrzLiMgU9q8Cx618kQpvaxhW37RDxcM85WnFyFY+uqIOD9Nxjt7CGkK8t4XPA0nXj1m5pColE2YC8c01e1HGrKjWdcBGlkQp3TxGtIOJz5Kb9b5lAKccWSzFDmOXIhIN1xnlupDYvgp88F49kmhhF9L1mwSC76gVilteHJs0Kg7fhWlu1MO8xIqOZe1ABbCdts5K4EaoRpHUPZQqfkPtEec146lexUuhxhMDE9HYj+5G/5+JrTBiSYU+WsQCnXqsZy934doU/VjhEF/WkF7lkPMGJZPQOR9XCNusxWi7eS15Sn2Vv27vaTnstBjexp4LOLmlQk30CAiBLfRGXBSsnFiaRmXIzkudi1hKNzix9UzTME5gv+Xnbr4kTgenLtiTXrOkpPbh2fqA17MqtXo1ennw/ZmGIqsCSdD737bBa8JpCi/rr0Tv5OdDqnhCEQ+l8wdDfXUv40MxYQgNT8oTfNYgdNV2FtOaslE60XTXitA8pjryPCasYYIGgSjWaYZU6SbhWav0VqujxY5eq+rv6aVrHcgzp//OQA5DP9CPr5KWwxoPnCVcyq22nZ5xDV9DLErP0VlxN2bUv9ZXyACVIt/PH71GIpdP5hqO1235UC4ZB5Vocj7Fnc0smIQnBY4pDoJIuhwEok/gYFthXE1E2Zzkp2+2Fz0T4eABkhUQHcyND1M8SbxPTIN2MkRqgc/0STV4p/xAGBb5meK/AwK77SgTi9rEykeyI4FbGLjCSFG0Npj2v41xU11l2sJaYeM8rY4KiTalgee9HkRXh+S1WKgdHmQIE96SmkCuKMS8efcjobOhjLLnngdrJP2OUMtmUQK0aQ1q1Nn1ORW2pC7z8H32dTVKQ2JrctWBd/sHOjjD+s7Vze8QCoUbvOhmTiogHb3rl+RhqZGBLvG8zsTk4TpBI293ACOTXHR4Mt/vKR7uikJnkQE2d4rWmhtdrouqHL3fX8htKL6cJAWnH8jfEHllbOMYpGhcQQ7+doobtlaKGljs+YsuoYfAvzUgcIsuF3kwhMKro/IbsSDmqL1rn82Wl4o5L1iPmUua39F7m9ZuDybZrUTIl5Cowg6Jstl5DcGDFioxE/NI3B0pz9O25ji5a23RdorEtZvBBsPGDqyjSkHaeZHJV2Xhfw2NrnPsWdZ3PudKnu0guP9U2zw3bn++ra84kf4FMEQzs0QGSl8XhO4Q5Bj0vAVufqnGvzMevfKY1WyIV1MkMNHOe/qoyOsPmeKjNuHbhb2A35RcXG/gdVId8yf2kpRS9Zn5W/ypOTHXWmOToODJsJxZxbQAQ/+ZecUW3RlIQOdruiv9SYmhizG/kMxUZlrCzNP65Dl3FG5 X-OriginatorOrg: labware.com X-MS-Exchange-CrossTenant-Network-Message-Id: 35fcba3e-8871-40e7-fe69-08dd334c4bdf X-MS-Exchange-CrossTenant-AuthSource: SA0PR17MB4314.namprd17.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2025 21:01:34.1981 (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: CAk8hgiLd9Sn/Y7o+0XsqR6QAb61Z6Dr6Lxvf5UU5VdXaBvhJWhWRHOsI42dC12Wc6oeWNDD6bSZcw7GVO37xg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR17MB3836 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: yekKrqajqnmbuecu_BYf7Gs3M4tMZdvbzob0yjJYmlc_1736715697 X-Mimecast-Originator: labware.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=WINDOWS-1252 X-Spam-Status: No, score=-12.5 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 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list <gdb-patches.sourceware.org> List-Unsubscribe: <https://sourceware.org/mailman/options/gdb-patches>, <mailto:gdb-patches-request@sourceware.org?subject=unsubscribe> List-Archive: <https://sourceware.org/pipermail/gdb-patches/> List-Post: <mailto:gdb-patches@sourceware.org> List-Help: <mailto:gdb-patches-request@sourceware.org?subject=help> List-Subscribe: <https://sourceware.org/mailman/listinfo/gdb-patches>, <mailto:gdb-patches-request@sourceware.org?subject=subscribe> Errors-To: gdb-patches-bounces~patchwork=sourceware.org@sourceware.org |
Series |
gdb: fix wrong buffer size passed to jit_unwind_reg_get_impl
|
|
Checks
Context | Check | Description |
---|---|---|
linaro-tcwg-bot/tcwg_gdb_build--master-aarch64 | success | Build passed |
linaro-tcwg-bot/tcwg_gdb_build--master-arm | success | Build passed |
linaro-tcwg-bot/tcwg_gdb_check--master-arm | success | Test passed |
linaro-tcwg-bot/tcwg_gdb_check--master-aarch64 | success | Test passed |
Commit Message
Jan Vrany
Jan. 12, 2025, 9 p.m. UTC
While testing other patches I realized that commit 7fcdec025 ("GDB: Use gdb::array_view for buffers used in register reading and unwinding") broke gdb.base/jit-reader.exp. What has happened is that the aforementioned commit changed parameter type from plain gdb_byte * to gdb::array_view<gdb_byte> in number of functions, including deprecated_frame_register_read(). It did not however update jit_unwind_reg_get_impl() which reads: static struct gdb_reg_value * jit_unwind_reg_get_impl (struct gdb_unwind_callbacks *cb, int regnum) { ... value = ((struct gdb_reg_value *) xmalloc (sizeof (struct gdb_reg_value) + size - 1)); value->defined = deprecated_frame_register_read (priv->this_frame, gdb_reg, value->value); ... } The "value" member of struct gdb_reg_value is declared as unsigned char value[1] but in fact is used as flexible array (see the xmalloc allocation above). After the change gdb_byte * to gdb::array_view<gdb_byte> the code still compiles just fine but passes down an array_view of length 1 (using conversion constructor). This then fails later down the road in frame_register_unwind(): gdb_assert (buffer.size () >= value->type ()->length ()); This commit fixes this problem by explicitly passing down an array_view with correct size. Tested on x86_64-linux-gnu. --- gdb/jit.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
Comments
On 2025-01-12 16:00, Jan Vrany wrote: > While testing other patches I realized that commit 7fcdec025 ("GDB: Use > gdb::array_view for buffers used in register reading and unwinding") > broke gdb.base/jit-reader.exp. > > What has happened is that the aforementioned commit changed parameter > type from plain gdb_byte * to gdb::array_view<gdb_byte> in number of > functions, including deprecated_frame_register_read(). It did not > however update jit_unwind_reg_get_impl() which reads: > > static struct gdb_reg_value * > jit_unwind_reg_get_impl (struct gdb_unwind_callbacks *cb, int regnum) > { > ... > value = ((struct gdb_reg_value *) > xmalloc (sizeof (struct gdb_reg_value) + size - 1)); > value->defined = deprecated_frame_register_read (priv->this_frame, gdb_reg, > value->value); > ... > } > > The "value" member of struct gdb_reg_value is declared as > unsigned char value[1] but in fact is used as flexible array (see > the xmalloc allocation above). > > After the change gdb_byte * to gdb::array_view<gdb_byte> the code still > compiles just fine but passes down an array_view of length 1 (using > conversion constructor). > > This then fails later down the road in frame_register_unwind(): > > gdb_assert (buffer.size () >= value->type ()->length ()); > > This commit fixes this problem by explicitly passing down an array_view > with correct size. > > Tested on x86_64-linux-gnu. > --- > gdb/jit.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/gdb/jit.c b/gdb/jit.c > index 4b9400ab2f8..d8cc94c1843 100644 > --- a/gdb/jit.c > +++ b/gdb/jit.c > @@ -985,8 +985,9 @@ jit_unwind_reg_get_impl (struct gdb_unwind_callbacks *cb, int regnum) > size = register_size (frame_arch, gdb_reg); > value = ((struct gdb_reg_value *) > xmalloc (sizeof (struct gdb_reg_value) + size - 1)); > - value->defined = deprecated_frame_register_read (priv->this_frame, gdb_reg, > - value->value); > + value->defined = deprecated_frame_register_read > + (priv->this_frame, gdb_reg, > + gdb::array_view<gdb_byte> (value->value, size)); > value->size = size; > value->free = reg_value_free_impl; > return value; I already had sent a patch here, which I have now pushed: https://inbox.sourceware.org/gdb-patches/95536d3b-33c3-43d2-a570-845bd6ad634e@polymtl.ca/T/#m9646f23ad72c721da8da114c83ea04df4e72b254 The end result is very similar to yours. Thanks, Simon
diff --git a/gdb/jit.c b/gdb/jit.c index 4b9400ab2f8..d8cc94c1843 100644 --- a/gdb/jit.c +++ b/gdb/jit.c @@ -985,8 +985,9 @@ jit_unwind_reg_get_impl (struct gdb_unwind_callbacks *cb, int regnum) size = register_size (frame_arch, gdb_reg); value = ((struct gdb_reg_value *) xmalloc (sizeof (struct gdb_reg_value) + size - 1)); - value->defined = deprecated_frame_register_read (priv->this_frame, gdb_reg, - value->value); + value->defined = deprecated_frame_register_read + (priv->this_frame, gdb_reg, + gdb::array_view<gdb_byte> (value->value, size)); value->size = size; value->free = reg_value_free_impl; return value;