PyModule_AddObject() may fail and it doesn't steal references
in this case.  The error condition should be handled to avoid
possible memory leaks.

And while it's not strictly specified if PyModule_Create may
fail, most of the examples in python documentation include
handling of a NULL case.

Signed-off-by: Ilya Maximets <i.maxim...@ovn.org>
---
 python/ovs/_json.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/python/ovs/_json.c b/python/ovs/_json.c
index 0b980038b..c36a140a8 100644
--- a/python/ovs/_json.c
+++ b/python/ovs/_json.c
@@ -229,9 +229,17 @@ PyInit__json(void)
     if (PyType_Ready(&json_ParserType) < 0) {
         return NULL;
     }
+
     m = PyModule_Create(&moduledef);
+    if (!m) {
+        return NULL;
+    }
 
     Py_INCREF(&json_ParserType);
-    PyModule_AddObject(m, "Parser", (PyObject *) & json_ParserType);
+    if (PyModule_AddObject(m, "Parser", (PyObject *) &json_ParserType) < 0) {
+        Py_DECREF(&json_ParserType);
+        Py_DECREF(m);
+        return NULL;
+    }
     return m;
 }
-- 
2.34.3

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to