From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id GH3CJUEYRmJQHAAAWB0awg (envelope-from ) for ; Thu, 31 Mar 2022 17:08:17 -0400 Received: by simark.ca (Postfix, from userid 112) id 984B91F163; Thu, 31 Mar 2022 17:08:17 -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 1BE4E1E150 for ; Thu, 31 Mar 2022 17:08:17 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id B99683898C77 for ; Thu, 31 Mar 2022 21:08:16 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B99683898C77 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1648760896; 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=jAXlrlzkOqDNsf8zR9QFnXVsMy2fGEi9kjmgSp4WZ044CGhdGyzuDtH0/IQBWClZj 7Yl7G7Ppa6XM7CFhoH61y47Vn2Vi8xoxs5AKzxShY3nBgAYj6xrWZ2m7+o4/gfSXpO zrTq3xGVVKxM2cE2aDP1r7YMp1TFG9Go3qLv0+W4= Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTPS id D7A4E388703A for ; Thu, 31 Mar 2022 21:04:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D7A4E388703A Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-256-E_-0WoNgMaKGBqgbLS9mYw-1; Thu, 31 Mar 2022 17:04:42 -0400 X-MC-Unique: E_-0WoNgMaKGBqgbLS9mYw-1 Received: by mail-wm1-f70.google.com with SMTP id q186-20020a1c43c3000000b0038ce534d9e2so354587wma.0 for ; Thu, 31 Mar 2022 14:04:42 -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=ZCCK0BnVJJwxtML6QR4+LF3e1hqI6NX5XW2cQMVBXA2Ne+Rv5DFJ+s2uIHEIGet5zO y1LxynaTvRf95EdOCR9x6PHM6YqVdJqnH8NlGmvcC2PYgnR7a0K5EviyBlw5u2k84lBt 9BdUgO0NIs1zTL7mEzGQXNnNlNSkm8SpqRMzhHylcsJONQMakqIN+anCx+/r9juRJ1NZ oS+rXnZ89dSLjzQpRZPTWEweOZaN5w3MTGTP+fkQPuCfjduXqRbmzJrvXrqEvvwCuN7i NwZDvQ465aXxUWRi6qpPh4MZDHtE86qjDdWiyGraZ4TZpoWaJ4jdJ79lsS/7+KG3sv2i SRWA== X-Gm-Message-State: AOAM532Gqfxoo/noJmuGUgAF4veLeGVr5VExZNVehX92WcwGxV3qt7Yo OXKEujtjzF+P326ZsIIjrrvw2ytZkvRABZF12+Sqy0QKKldHCrUhQyc9TJrLiJlfp0Jxiqxop0V r1k9PDAbsa/ahXUlNcbmZ+hE2D/cyDqjjqgmzP0+pTDaKwlxtv1+qkZUtzzTSqPrL/t5jHNhH3w == X-Received: by 2002:a05:600c:1c85:b0:38d:5e8:a12f with SMTP id k5-20020a05600c1c8500b0038d05e8a12fmr6316732wms.27.1648760680741; Thu, 31 Mar 2022 14:04:40 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzJqmzQcBHxJavA6ZrDBzF1R1f36zr0vKXibmlDBq1dJTVc7ScaRu2q+J4q/IaInub5bX5XfA== X-Received: by 2002:a05:600c:1c85:b0:38d:5e8:a12f with SMTP id k5-20020a05600c1c8500b0038d05e8a12fmr6316715wms.27.1648760680480; Thu, 31 Mar 2022 14:04:40 -0700 (PDT) Received: from localhost (host86-169-131-113.range86-169.btcentralplus.com. [86.169.131.113]) by smtp.gmail.com with ESMTPSA id 11-20020a056000156b00b002040674fd13sm498512wrz.38.2022.03.31.14.04.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 31 Mar 2022 14:04:39 -0700 (PDT) To: gdb-patches@sourceware.org Subject: [PATCH 07/16] gdb/tui: avoid theoretical bug with 'tui reg' command Date: Thu, 31 Mar 2022 22:04:13 +0100 Message-Id: <4b436cdc92fa9be348b20794c6fa0d59177a9d86.1648760270.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