From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id wLOiL/WCTWLSMAAAWB0awg (envelope-from ) for ; Wed, 06 Apr 2022 08:09:25 -0400 Received: by simark.ca (Postfix, from userid 112) id C11921F344; Wed, 6 Apr 2022 08:09:25 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-3.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 400D21E787 for ; Wed, 6 Apr 2022 08:09:25 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id E23D7385E45B for ; Wed, 6 Apr 2022 12:09:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E23D7385E45B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1649246964; bh=4T/hd0Bv4qwGYImApU2XgIsvt0oWRhZoWgOHoHvHGtA=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=iSWpiSHHMOKJ/WgBGoLYmRWeN/vbZ5UYZo3NL1AlOuF7ZtA1XRjtr3PExnm6uScVa ZANEwteo05Y5FkgHpwjCl4SrTMQGiXvi9uXxQwvE1/X1Na2E7P6k08Jw7X/+q3sm3a EGtI5AI9ziNq3G5eFQGptyLst4yCgwqPcDl9tLyM= Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id D609C385741D for ; Wed, 6 Apr 2022 12:05:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D609C385741D Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-499-Kpi6apL8P6-7kGxQSwzNWQ-1; Wed, 06 Apr 2022 08:05:07 -0400 X-MC-Unique: Kpi6apL8P6-7kGxQSwzNWQ-1 Received: by mail-wr1-f72.google.com with SMTP id u30-20020adfa19e000000b00206153b3cceso428735wru.1 for ; Wed, 06 Apr 2022 05:05:07 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=4T/hd0Bv4qwGYImApU2XgIsvt0oWRhZoWgOHoHvHGtA=; b=fa95LOsqIHLNAG7OPoBt3bOzoMNgtrzg/sdnDDu0rhS4aOpV7Ftm3iv1M04opuXzw4 LUfcmU3sMiySrRNWUV0jatDaEDQXF72ovW5POWgYx+36xLQRV0ZDBn3ri0n0uhML9ckK lqxNRKGi9J80ilioU/7WcK5hxNceH/X/fXFvs4ot1uwvu7sMTlsbaCfrQ9KqX1Um+u5k Q8uCKQLH+wlHWrD/30q2SDlRT/TOAxfueQQDz1RA9Q7JBn4f6aloa5/ILZqLFbka9TC2 E2hQVb+om8tYxV6DyBc3sS0xNZ087Vu/yTKFX/PzXPa731uWdP14txqmq5asV8LVleJu PRTA== X-Gm-Message-State: AOAM533ca+QfijNlsJYj1HIrdY1N7Szbgh4ytu1pCI4XwdzklAP5TKis 7lN7K+G6NhNvbhVxxrOIqm1X4FwW4b827mUfv965wsqQOxXJ2QHSK8n+WUSOpu51cUQNTT+ShqY E3+kJzcbN70QBX7KtHeDk9twAKgu67GXhbt4HD5nT+80heT4VrnXjMcOg8ObMXBYFQZN0/Y8VGQ == X-Received: by 2002:adf:8046:0:b0:205:db94:4766 with SMTP id 64-20020adf8046000000b00205db944766mr6485299wrk.565.1649246705903; Wed, 06 Apr 2022 05:05:05 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw66x/Y/zmhutAbx0SlC8iYpwBlMZMz/wfJzZy9gHvWXpQg0gnHuudt9tZq/z13J8Y7awPD3w== X-Received: by 2002:adf:8046:0:b0:205:db94:4766 with SMTP id 64-20020adf8046000000b00205db944766mr6485267wrk.565.1649246705496; Wed, 06 Apr 2022 05:05:05 -0700 (PDT) Received: from localhost (host86-169-131-113.range86-169.btcentralplus.com. [86.169.131.113]) by smtp.gmail.com with ESMTPSA id y6-20020a05600015c600b00203fa70b4ebsm17922378wry.53.2022.04.06.05.05.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Apr 2022 05:05:04 -0700 (PDT) To: gdb-patches@sourceware.org Subject: [PATCHv2 07/16] gdb/tui: avoid theoretical bug with 'tui reg' command Date: Wed, 6 Apr 2022 13:04:40 +0100 Message-Id: <65d3d60cb9a62242939c65aa3c05fb03201d739a.1649246539.git.aburgess@redhat.com> X-Mailer: git-send-email 2.25.4 In-Reply-To: References: MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII"; x-default=true X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Andrew Burgess via Gdb-patches Reply-To: Andrew Burgess Cc: Andrew Burgess Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org Sender: "Gdb-patches" While looking at the 'tui reg' command as part of another patch, I spotted a theoretical bug. The 'tui reg' command takes the name of a register group, but also handles partial register group matches, though the partial match has to be unique. The current command logic goes: With the code as currently written, if a target description named a register group either 'prev' or 'next' then GDB would see this as an ambiguous register name, and refuse to switch groups. Naming a register group 'prev' or 'next' seems pretty unlikely, but, by adding a single else block we can prevent this problem. Now, if there's a 'prev' or 'next' register group, the user will not be able to select the group directly, the 'prev' and 'next' names will always iterate through the available groups instead. But at least the user could select their groups by iteration, rather than direct selection. --- gdb/tui/tui-regs.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/gdb/tui/tui-regs.c b/gdb/tui/tui-regs.c index 5c6189a59b1..75ffa9babbf 100644 --- a/gdb/tui/tui-regs.c +++ b/gdb/tui/tui-regs.c @@ -580,19 +580,21 @@ tui_reg_command (const char *args, int from_tty) match = tui_reg_next (current_group, gdbarch); else if (strncmp (args, "prev", len) == 0) match = tui_reg_prev (current_group, gdbarch); - - /* This loop matches on the initial part of a register group - name. If this initial part in ARGS matches only one register - group then the switch is made. */ - for (group = reggroup_next (gdbarch, NULL); - group != NULL; - group = reggroup_next (gdbarch, group)) + else { - if (strncmp (reggroup_name (group), args, len) == 0) + /* This loop matches on the initial part of a register group + name. If this initial part in ARGS matches only one register + group then the switch is made. */ + for (group = reggroup_next (gdbarch, NULL); + group != NULL; + group = reggroup_next (gdbarch, group)) { - if (match != NULL) - error (_("ambiguous register group name '%s'"), args); - match = group; + if (strncmp (reggroup_name (group), args, len) == 0) + { + if (match != NULL) + error (_("ambiguous register group name '%s'"), args); + match = group; + } } } -- 2.25.4