From: Andrew Burgess via Gdb-patches <gdb-patches@sourceware.org>
To: gdb-patches@sourceware.org
Cc: Andrew Burgess <aburgess@redhat.com>
Subject: [PATCHv2 07/16] gdb/tui: avoid theoretical bug with 'tui reg' command
Date: Wed, 6 Apr 2022 13:04:40 +0100 [thread overview]
Message-ID: <65d3d60cb9a62242939c65aa3c05fb03201d739a.1649246539.git.aburgess@redhat.com> (raw)
In-Reply-To: <cover.1649246538.git.aburgess@redhat.com>
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
next prev parent reply other threads:[~2022-04-06 12:09 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-31 21:04 [PATCH 00/16] Default register groups, and general related cleanup Andrew Burgess via Gdb-patches
2022-03-31 21:04 ` [PATCH 01/16] gdb: don't try to use readline before it's initialized Andrew Burgess via Gdb-patches
2022-03-31 21:04 ` [PATCH 02/16] gdb: add some const in gdb/reggroups.c Andrew Burgess via Gdb-patches
2022-03-31 21:04 ` [PATCH 03/16] gdb: make gdbarch_register_reggroup_p take a const reggroup * Andrew Burgess via Gdb-patches
2022-04-04 22:35 ` Lancelot SIX via Gdb-patches
2022-04-05 8:24 ` Andrew Burgess via Gdb-patches
2022-03-31 21:04 ` [PATCH 04/16] gdb: switch to using 'const reggroup *' in tui-regs.{c, h} Andrew Burgess via Gdb-patches
2022-03-31 21:04 ` [PATCH 05/16] gdb: use 'const reggroup *' in python/py-registers.c file Andrew Burgess via Gdb-patches
2022-03-31 21:04 ` [PATCH 06/16] gdb: have reggroup_find return a const Andrew Burgess via Gdb-patches
2022-03-31 21:04 ` [PATCH 07/16] gdb/tui: avoid theoretical bug with 'tui reg' command Andrew Burgess via Gdb-patches
2022-03-31 21:04 ` [PATCH 08/16] gdb/tui: fix 'tui reg next/prev' command when data window is hidden Andrew Burgess via Gdb-patches
2022-03-31 21:04 ` [PATCH 09/16] gdb: always add the default register groups Andrew Burgess via Gdb-patches
2022-03-31 21:04 ` [PATCH 10/16] gdb: convert reggroups to use a std::vector Andrew Burgess via Gdb-patches
2022-03-31 21:04 ` [PATCH 11/16] gdb: remove reggroup_next and reggroup_prev Andrew Burgess via Gdb-patches
2022-04-05 23:11 ` Lancelot SIX via Gdb-patches
2022-04-06 12:06 ` Andrew Burgess via Gdb-patches
2022-03-31 21:04 ` [PATCH 12/16] gdb: more 'const' in gdb/reggroups.{c,h} Andrew Burgess via Gdb-patches
2022-03-31 21:04 ` [PATCH 13/16] gdb: make the pre-defined register groups const Andrew Burgess via Gdb-patches
2022-03-31 21:04 ` [PATCH 14/16] gdb: convert reggroup to a C++ class with constructor, etc Andrew Burgess via Gdb-patches
2022-03-31 21:04 ` [PATCH 15/16] gdb: move struct reggroup into reggroups.h header Andrew Burgess via Gdb-patches
2022-03-31 21:04 ` [PATCH 16/16] gdb: update comments throughout reggroups.{c,h} files Andrew Burgess via Gdb-patches
2022-04-06 14:28 ` Simon Marchi via Gdb-patches
2022-04-06 12:04 ` [PATCHv2 00/16] Default register groups, and general related cleanup Andrew Burgess via Gdb-patches
2022-04-06 12:04 ` [PATCHv2 01/16] gdb: don't try to use readline before it's initialized Andrew Burgess via Gdb-patches
2022-04-06 12:57 ` Simon Marchi via Gdb-patches
2022-04-06 12:04 ` [PATCHv2 02/16] gdb: add some const in gdb/reggroups.c Andrew Burgess via Gdb-patches
2022-04-06 12:58 ` Simon Marchi via Gdb-patches
2022-04-06 12:04 ` [PATCHv2 03/16] gdb: make gdbarch_register_reggroup_p take a const reggroup * Andrew Burgess via Gdb-patches
2022-04-06 12:04 ` [PATCHv2 04/16] gdb: switch to using 'const reggroup *' in tui-regs.{c, h} Andrew Burgess via Gdb-patches
2022-04-06 12:04 ` [PATCHv2 05/16] gdb: use 'const reggroup *' in python/py-registers.c file Andrew Burgess via Gdb-patches
2022-04-06 12:04 ` [PATCHv2 06/16] gdb: have reggroup_find return a const Andrew Burgess via Gdb-patches
2022-04-06 12:04 ` Andrew Burgess via Gdb-patches [this message]
2022-04-06 13:02 ` [PATCHv2 07/16] gdb/tui: avoid theoretical bug with 'tui reg' command Simon Marchi via Gdb-patches
2022-04-06 12:04 ` [PATCHv2 08/16] gdb/tui: fix 'tui reg next/prev' command when data window is hidden Andrew Burgess via Gdb-patches
2022-04-06 13:13 ` Simon Marchi via Gdb-patches
2022-04-06 12:04 ` [PATCHv2 09/16] gdb: always add the default register groups Andrew Burgess via Gdb-patches
2022-04-06 13:22 ` Simon Marchi via Gdb-patches
2022-04-06 12:04 ` [PATCHv2 10/16] gdb: convert reggroups to use a std::vector Andrew Burgess via Gdb-patches
2022-04-06 12:04 ` [PATCHv2 11/16] gdb: remove reggroup_next and reggroup_prev Andrew Burgess via Gdb-patches
2022-04-06 14:22 ` Simon Marchi via Gdb-patches
2022-04-06 14:23 ` Simon Marchi via Gdb-patches
2022-04-06 12:04 ` [PATCHv2 12/16] gdb: more 'const' in gdb/reggroups.{c,h} Andrew Burgess via Gdb-patches
2022-04-06 12:04 ` [PATCHv2 13/16] gdb: make the pre-defined register groups const Andrew Burgess via Gdb-patches
2022-04-06 12:04 ` [PATCHv2 14/16] gdb: convert reggroup to a C++ class with constructor, etc Andrew Burgess via Gdb-patches
2022-04-06 12:04 ` [PATCHv2 15/16] gdb: move struct reggroup into reggroups.h header Andrew Burgess via Gdb-patches
2022-04-06 12:04 ` [PATCHv2 16/16] gdb: update comments throughout reggroups.{c, h} files Andrew Burgess via Gdb-patches
2022-04-06 14:34 ` [PATCHv2 00/16] Default register groups, and general related cleanup Simon Marchi via Gdb-patches
2022-04-07 15:16 ` Andrew Burgess via Gdb-patches
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=65d3d60cb9a62242939c65aa3c05fb03201d739a.1649246539.git.aburgess@redhat.com \
--to=gdb-patches@sourceware.org \
--cc=aburgess@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox