]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Require a command argument in gdb.execute_mi
authorTom Tromey <tromey@adacore.com>
Tue, 15 Oct 2024 16:50:01 +0000 (10:50 -0600)
committerTom Tromey <tromey@adacore.com>
Fri, 18 Oct 2024 17:50:27 +0000 (11:50 -0600)
Hannes pointed out that gdb.execute_mi() will crash.
This patch fixes the bug.

Reviewed-By: Guinevere Larsen <guinevere@redhat.com>
gdb/python/py-mi.c
gdb/testsuite/gdb.python/py-exec-mi.exp

index f0e28d9d8181aea749084009751d1deba5c29ca6..cf75a18958e1de28dd8289a749d8246c214bd9cd 100644 (file)
@@ -143,6 +143,13 @@ gdbpy_execute_mi_command (PyObject *self, PyObject *args, PyObject *kw)
   if (n_args < 0)
     return nullptr;
 
+  if (n_args == 0)
+    {
+      PyErr_SetString (PyExc_TypeError,
+                      _("gdb.execute_mi requires command argument"));
+      return nullptr;
+    }
+
   for (Py_ssize_t i = 0; i < n_args; ++i)
     {
       /* Note this returns a borrowed reference.  */
index 8a5d0c9da2fc6707a1bab61804a89ea0997d4d9b..6b81644c0c7a6a5591375ff4ec863a59546a0223 100644 (file)
@@ -30,3 +30,7 @@ gdb_test_no_output "python gdb.execute_mi('-exec-arguments', 'a', 'b', 'c')" \
     "set arguments"
 
 gdb_test "show args" ".*\"a b c\"."
+
+# Ensure that this causes an error, not a crash.
+gdb_test "python gdb.execute_mi()" \
+    "Error occurred in Python: gdb.execute_mi requires command argument"