]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gdb: add an assert to cmd_list_element constructor
authorAndrew Burgess <aburgess@redhat.com>
Sun, 13 Apr 2025 13:01:59 +0000 (14:01 +0100)
committerAndrew Burgess <aburgess@redhat.com>
Mon, 14 Apr 2025 08:29:15 +0000 (09:29 +0100)
The cmd_list_element::doc variable must be non-nullptr, otherwise, in
`help_cmd` (cli/cli-decode.c), we will trigger an assert when we run
one of these lines:

      gdb_puts (c->doc, stream);

or,

      gdb_puts (alias->doc, stream);

as gdb_puts requires that the first argument (the doc string) be
non-nullptr.

Better, I think, to assert when the cmd_list_element is created,
rather than catching an assert later when 'help CMD' is used.

I only ran into this case when messing with the Python API command
creation code, I accidentally created a command with a nullptr doc
string, and only found out when I ran 'help CMD' and got an
assertion.

While I'm adding this assertion, I figure I should also assert that
the command name is not nullptr too.  Looking through cli-decode.c,
there seems to be plenty of places where we assume a non-nullptr name.

Built and tested on x86-64 GNU/Linux with an all-targets build; I
don't see any regressions, so (I hope) there are no commands that
currently violate this assertion.

Approved-By: Simon Marchi <simon.marchi@efficios.com>
gdb/cli/cli-decode.h

index 217afbc8ca7fa5f2f840209177194e2ec0ade2dc..9be446fb64194c26ce3ab0f0c18441654995a14c 100644 (file)
@@ -62,6 +62,8 @@ struct cmd_list_element
       type (not_set_cmd),
       doc (doc_)
   {
+    gdb_assert (name != nullptr);
+    gdb_assert (doc != nullptr);
     memset (&function, 0, sizeof (function));
   }