From 042f697a0fce0255b569786d29e929a4a41cbc46 Mon Sep 17 00:00:00 2001 From: Gilchrist Dadaglo Date: Tue, 8 Dec 2020 14:37:13 +0000 Subject: [PATCH] BUG/MEDIUM: spoa/python: Fixing PyObject_Call positional arguments As per https://docs.python.org/3/c-api/object.html#c.PyObject_Call, positional arguments should be an empty tuple when not used. Previously the code had a dictionary instead of tuple. This commit is to fix it and use tuple to avoid unexpected consequences This patch must be backported as far as 2.0. --- contrib/spoa_server/ps_python.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/contrib/spoa_server/ps_python.c b/contrib/spoa_server/ps_python.c index f2ddc165f..20861d6e3 100644 --- a/contrib/spoa_server/ps_python.c +++ b/contrib/spoa_server/ps_python.c @@ -43,7 +43,7 @@ static PyObject *module_ipaddress; static PyObject *ipv4_address; static PyObject *ipv6_address; static PyObject *spoa_error; -static PyObject *empty_array; +static PyObject *empty_tuple; static struct worker *worker; static int ps_python_start_worker(struct worker *w); @@ -522,8 +522,8 @@ static int ps_python_start_worker(struct worker *w) return 0; } - empty_array = PyDict_New(); - if (empty_array == NULL) { + empty_tuple = PyTuple_New(0); + if (empty_tuple == NULL) { PyErr_Print(); return 0; } @@ -710,7 +710,7 @@ static int ps_python_exec_message(struct worker *w, void *ref, int nargs, struct PyErr_Print(); return 0; } - value = PyObject_Call(func, empty_array, ip_dict); + value = PyObject_Call(func, empty_tuple, ip_dict); Py_DECREF(func); Py_DECREF(ip_dict); break; @@ -780,7 +780,7 @@ static int ps_python_exec_message(struct worker *w, void *ref, int nargs, struct return 0; } - result = PyObject_Call(python_ref, empty_array, fkw); + result = PyObject_Call(python_ref, empty_tuple, fkw); Py_DECREF(fkw); if (result == NULL) { PyErr_Print();