]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
gdb/python: missing PyObject_IsTrue error check in micmdpy_set_installed
authorAndrew Burgess <aburgess@redhat.com>
Sun, 10 Nov 2024 15:50:26 +0000 (15:50 +0000)
committerAndrew Burgess <aburgess@redhat.com>
Thu, 14 Nov 2024 19:34:44 +0000 (19:34 +0000)
commitad39b4aae84a224dc5451d6a5f707b1db67a7b7e
treeba5c21256f770093040370fd7f61285f0f45b395
parent5209b83f530fad1598db3eeb406762bf3fa3d5d2
gdb/python: missing PyObject_IsTrue error check in micmdpy_set_installed

Like the previous commit, I discovered that in micmdpy_set_installed
we were calling PyObject_IsTrue, but not checking for a possible error
value being returned.

The micmdpy_set_installed function implements the
gdb.MICommand.installed attribute, and the documentation indicates that
this attribute should only be assigned a bool:

  This attribute is read-write, setting this attribute to 'False'
  will uninstall the command, removing it from the set of available
  commands.  Setting this attribute to 'True' will install the
  command for use.

So I propose that instead of using PyObject_IsTrue we use
PyBool_Check, and if the new value fails this check we raise an
error.  We can then compare the new value to Py_True directly instead
of calling PyObject_IsTrue.

This is a potentially breaking change to the Python API, but hopefully
this will not impact too many people, and the fix is pretty
easy (switch to using a bool).  I've added a NEWS entry to draw
attention to this change.

Approved-By: Tom Tromey <tom@tromey.com>
gdb/NEWS
gdb/python/py-micmd.c
gdb/testsuite/gdb.python/py-mi-cmd.exp