aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Burgess <aburgess@redhat.com>2025-08-20 10:45:09 +0100
committerAndrew Burgess <aburgess@redhat.com>2025-08-21 11:47:17 +0100
commitdbd05b9edcf760a7001985f89bc760358a3c19d7 (patch)
tree58b47b9fb55f36eed931c768dbd17e48f53e8d9d
parent8186f0d31ddf339ba6803cde97ef6a6310ca2587 (diff)
downloadbinutils-dbd05b9edcf760a7001985f89bc760358a3c19d7.zip
binutils-dbd05b9edcf760a7001985f89bc760358a3c19d7.tar.gz
binutils-dbd05b9edcf760a7001985f89bc760358a3c19d7.tar.bz2
gdb/python: check return value of PyObject_New in all cases
I spotted a few cases where the return value of PyObject_New was not being checked against nullptr, but we were dereferencing the result. All fixed here. The fixed functions can now return NULL, so I checked all the callers, and I believe there will handle a return of NULL correctly. Assuming calls to PyObject_New never fail, there should be no user visible changes after this commit. No tests here as I don't know how we'd go about causing a Python object allocation to fail. Approved-By: Simon Marchi <simon.marchi@efficios.com>
-rw-r--r--gdb/python/py-block.c3
-rw-r--r--gdb/python/py-record.c3
-rw-r--r--gdb/python/py-unwind.c2
3 files changed, 8 insertions, 0 deletions
diff --git a/gdb/python/py-block.c b/gdb/python/py-block.c
index fa7dd19..66ccad7 100644
--- a/gdb/python/py-block.c
+++ b/gdb/python/py-block.c
@@ -356,6 +356,9 @@ block_to_block_object (const struct block *block, struct objfile *objfile)
}
result = PyObject_New (block_object, &block_object_type);
+ if (result == nullptr)
+ return nullptr;
+
result->block = block;
result->objfile = objfile;
diff --git a/gdb/python/py-record.c b/gdb/python/py-record.c
index 7e7904b..89c2e77 100644
--- a/gdb/python/py-record.c
+++ b/gdb/python/py-record.c
@@ -696,6 +696,9 @@ gdbpy_current_recording (PyObject *self, PyObject *args)
Py_RETURN_NONE;
ret = PyObject_New (recpy_record_object, &recpy_record_type);
+ if (ret == nullptr)
+ return nullptr;
+
ret->thread = inferior_thread ();
ret->method = target_record_method (ret->thread->ptid);
diff --git a/gdb/python/py-unwind.c b/gdb/python/py-unwind.c
index dc078ec..43125bb 100644
--- a/gdb/python/py-unwind.c
+++ b/gdb/python/py-unwind.c
@@ -287,6 +287,8 @@ pyuw_create_unwind_info (PyObject *pyo_pending_frame,
unwind_info_object *unwind_info
= PyObject_New (unwind_info_object, &unwind_info_object_type);
+ if (unwind_info == nullptr)
+ return nullptr;
unwind_info->frame_id = frame_id;
Py_INCREF (pyo_pending_frame);