BUG/MINOR: spoa/python: Cleanup ipaddress objects if initialization fails

This change is to ensure objects from the ipaddress module are cleaned
up when spoa module initialization fails.
In general the interpreter would just crash, but in a code where import
is conditional (try/except), then we would keep those objects around

This patch must be backported as far as 2.0.
This commit is contained in:
Gilchrist Dadaglo 2020-12-08 14:37:12 +00:00 committed by Christopher Faulet
parent 132d8f61e9
commit d1c0cf80bc

View File

@ -410,18 +410,24 @@ static int ps_python_start_worker(struct worker *w)
ipv4_address = PyObject_GetAttrString(module_ipaddress, "IPv4Address");
if (ipv4_address == NULL) {
Py_DECREF(module_ipaddress);
PyErr_Print();
return 0;
}
ipv6_address = PyObject_GetAttrString(module_ipaddress, "IPv6Address");
if (ipv6_address == NULL) {
Py_DECREF(ipv4_address);
Py_DECREF(module_ipaddress);
PyErr_Print();
return 0;
}
PY_INIT_MODULE(m, "spoa", spoa_methods, &spoa_module_definition);
if (m == NULL) {
Py_DECREF(ipv4_address);
Py_DECREF(ipv6_address);
Py_DECREF(module_ipaddress);
PyErr_Print();
return 0;
}