diff options
author | Daniel Alley <dalley@redhat.com> | 2020-11-01 07:12:48 +0300 |
---|---|---|
committer | amatej <matej.ales@seznam.cz> | 2020-11-05 14:21:13 +0300 |
commit | a91cf762554aaf48b4e6c5b4e23d50ecefb36cee (patch) | |
tree | 592fdd8d9dec4f532582a7b32cf2e977b640e6cc | |
parent | a5bad29b3f760ad482acb01a88b7eb968246efb3 (diff) |
Fix leaks triggered by locate_metadata tests
-rw-r--r-- | src/python/locate_metadata-py.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/python/locate_metadata-py.c b/src/python/locate_metadata-py.c index f27de0f..99997d7 100644 --- a/src/python/locate_metadata-py.c +++ b/src/python/locate_metadata-py.c @@ -143,6 +143,9 @@ getitem(_MetadataLocationObject *self, PyObject *pykey) } pykey = PyObject_ToPyBytesOrNull(pykey); + if (!pykey) { + return NULL; + } key = PyBytes_AsString(pykey); value = NULL; @@ -179,8 +182,19 @@ getitem(_MetadataLocationObject *self, PyObject *pykey) } else if (!strcmp(key, "additional_metadata")){ if (self->ml->additional_metadata){ PyObject *list = PyList_New(0); + if (!list) { + Py_XDECREF(pykey); + return NULL; + } for (GSList *elem = self->ml->additional_metadata; elem; elem=g_slist_next(elem)){ - PyList_Append(list, PyUnicode_FromString(((cr_Metadatum *)(elem->data))->name)); + PyObject *namestr = PyUnicode_FromString(((cr_Metadatum *)(elem->data))->name); + if (!namestr || PyList_Append(list, namestr)) { + Py_DECREF(list); + Py_XDECREF(pykey); + return NULL; + } else { + Py_DECREF(namestr); + } } Py_XDECREF(pykey); return list; |