[Libguestfs] [nbdkit PATCH] python: Make sure callbacks are actually callable
Richard W.M. Jones
rjones at redhat.com
Fri Apr 6 09:23:47 UTC 2018
On Thu, Apr 05, 2018 at 05:25:55PM -0500, Eric Blake wrote:
> Rather than catching a Python error at runtime when trying to
> call an object that wasn't callable, just ignore that object
> up front when loading the plugin.
>
> Signed-off-by: Eric Blake <eblake at redhat.com>
> ---
>
> Various examples on calling Python functions from C recommend
> doing this filtering check.
>
> plugins/python/python.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/plugins/python/python.c b/plugins/python/python.c
> index 0206b80..35e8df2 100644
> --- a/plugins/python/python.c
> +++ b/plugins/python/python.c
> @@ -94,6 +94,11 @@ callback_defined (const char *name, PyObject **obj_rtn)
> obj = PyObject_GetAttrString (module, name);
> if (!obj)
> return 0;
> + if (!PyCallable_Check (obj)) {
> + nbdkit_debug ("object %s isn't callable", name);
> + Py_DECREF (obj);
> + return 0;
> + }
>
> if (obj_rtn != NULL)
> *obj_rtn = obj;
ACK.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-top is 'top' for virtual machines. Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://people.redhat.com/~rjones/virt-top
More information about the Libguestfs
mailing list