]> git.ipfire.org Git - pakfire.git/commitdiff
_pakfire: Fix reference counting of keys
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 12 Jul 2021 10:50:09 +0000 (10:50 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 12 Jul 2021 10:51:01 +0000 (10:51 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/_pakfire/pakfire.c

index 44830475139983b91111876ecb34c6296fa5e40e..33868f5ea3a8153e8ddf44f0b3ae2c8232baa845 100644 (file)
@@ -457,11 +457,15 @@ static PyObject* Pakfire_get_key(PakfireObject* self, PyObject* args) {
        if (!PyArg_ParseTuple(args, "s", &pattern))
                return NULL;
 
+       // Try finding the key
        struct pakfire_key* key = pakfire_key_get(self->pakfire, pattern);
        if (!key)
                Py_RETURN_NONE;
 
-       return new_key(&KeyType, key);
+       PyObject* object = new_key(&KeyType, key);
+       pakfire_key_unref(key);
+
+       return object;
 }
 
 static PyObject* Pakfire_generate_key(PakfireObject* self, PyObject* args, PyObject* kwds) {
@@ -480,7 +484,10 @@ static PyObject* Pakfire_generate_key(PakfireObject* self, PyObject* args, PyObj
                return NULL;
        }
 
-       return new_key(&KeyType, key);
+       PyObject* object = new_key(&KeyType, key);
+       pakfire_key_unref(key);
+
+       return object;
 }
 
 static PyObject* Pakfire_import_key(PakfireObject* self, PyObject* args) {
@@ -538,8 +545,12 @@ static PyObject* Pakfire_fetch_key(PakfireObject* self, PyObject* args, PyObject
        }
 
        // Return the result
-       if (key)
-               return new_key(&KeyType, key);
+       if (key) {
+               PyObject* object = new_key(&KeyType, key);
+               pakfire_key_unref(key);
+
+               return object;
+       }
 
        Py_RETURN_NONE;
 }