mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-22 07:03:38 +00:00
python: Avoid crash if callback parameters cannot be built
In the case that building the parameters to the Python event callback fails, args was returned as NULL. We immediately tried to call Py_INCREF on this which crashed. Returning NULL means the Python function threw an exception, so print the exception and return (there is no way to return an error here - the event is lost). Reported-by: Yonatan Shtarkman See: https://listman.redhat.com/archives/libguestfs/2023-February/030653.html
This commit is contained in:
@@ -134,18 +134,21 @@ guestfs_int_py_event_callback_wrapper (guestfs_h *g,
|
||||
args = Py_BuildValue ("(Kis#O)",
|
||||
(unsigned PY_LONG_LONG) event, event_handle,
|
||||
buf, buf_len, py_array);
|
||||
if (args == NULL) {
|
||||
PyErr_PrintEx (0);
|
||||
goto out;
|
||||
}
|
||||
|
||||
Py_INCREF (args);
|
||||
|
||||
py_r = PyObject_CallObject (py_callback, args);
|
||||
|
||||
Py_DECREF (args);
|
||||
|
||||
if (py_r != NULL)
|
||||
Py_DECREF (py_r);
|
||||
else
|
||||
/* Callback threw an exception: print it. */
|
||||
PyErr_PrintEx (0);
|
||||
|
||||
out:
|
||||
PyGILState_Release (py_save);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user