From: Gilchrist Dadaglo Date: Mon, 24 Aug 2020 19:21:34 +0000 (+0000) Subject: BUG/MINOR: contrib/spoa-server: Updating references to free in case of failure X-Git-Tag: v2.1.9~34 X-Git-Url: http://git.haproxy.org/?a=commitdiff_plain;h=9376baa546dc885f12f32dbb3f400916bc38ab73;p=haproxy-2.1.git BUG/MINOR: contrib/spoa-server: Updating references to free in case of failure When we encounter a failure, all previously borrowed references should be freed. Especially if the program is not failing immediately This patch must be backported as far as 2.0. (cherry picked from commit 2417ebcc013b23ac961afb436b9b2dead32c28b0) Signed-off-by: Christopher Faulet (cherry picked from commit 9fe95de0df2748362fddc4acf84dd19c40de6a9f) Signed-off-by: Christopher Faulet --- diff --git a/contrib/spoa_server/ps_python.c b/contrib/spoa_server/ps_python.c index dd4e63d..3ad9323 100644 --- a/contrib/spoa_server/ps_python.c +++ b/contrib/spoa_server/ps_python.c @@ -458,6 +458,7 @@ static int ps_python_exec_message(struct worker *w, void *ref, int nargs, struct key = PyString_FromString("name"); if (key == NULL) { Py_DECREF(kw_args); + Py_DECREF(ent); PyErr_Print(); return 0; } @@ -523,6 +524,7 @@ static int ps_python_exec_message(struct worker *w, void *ref, int nargs, struct if (func == NULL) { Py_DECREF(kw_args); Py_DECREF(ent); + Py_DECREF(key); PyErr_Print(); return 0; } @@ -530,6 +532,7 @@ static int ps_python_exec_message(struct worker *w, void *ref, int nargs, struct if (ip_dict == NULL) { Py_DECREF(kw_args); Py_DECREF(ent); + Py_DECREF(key); Py_DECREF(func); PyErr_Print(); return 0; @@ -538,6 +541,7 @@ static int ps_python_exec_message(struct worker *w, void *ref, int nargs, struct if (ip_name == NULL) { Py_DECREF(kw_args); Py_DECREF(ent); + Py_DECREF(key); Py_DECREF(func); Py_DECREF(ip_dict); PyErr_Print(); @@ -547,6 +551,7 @@ static int ps_python_exec_message(struct worker *w, void *ref, int nargs, struct if (ip_value == NULL) { Py_DECREF(kw_args); Py_DECREF(ent); + Py_DECREF(key); Py_DECREF(func); Py_DECREF(ip_dict); Py_DECREF(ip_name); @@ -557,6 +562,10 @@ static int ps_python_exec_message(struct worker *w, void *ref, int nargs, struct Py_DECREF(ip_name); Py_DECREF(ip_value); if (ret == -1) { + Py_DECREF(kw_args); + Py_DECREF(ent); + Py_DECREF(key); + Py_DECREF(func); Py_DECREF(ip_dict); PyErr_Print(); return 0;