From 70db7976d6ca0e6a4140269f21a66c14f6c177ab Mon Sep 17 00:00:00 2001
From: Karolina Surma <ksurma@redhat.com>
Date: Thu, 29 May 2025 17:31:45 +0200
Subject: [PATCH] Avoid Python reference leaks
python/rpmarchive-py.c | 11 +++++++++--
python/rpmfiles-py.c | 1 +
2 files changed, 10 insertions(+), 2 deletions(-)
@@ -138,12 +138,16 @@ static PyObject *rpmarchive_readto(rpmarchiveObject *s,
return NULL;
}
- if (s->archive == NULL)
+ if (s->archive == NULL) {
+ Py_DECREF(fdo);
return rpmarchive_closed();
+ }
+
Py_BEGIN_ALLOW_THREADS
rc = rpmfiArchiveReadToFile(s->archive, rpmfdGetFd(fdo), nodigest);
Py_END_ALLOW_THREADS
+ Py_DECREF(fdo);
if (rc)
return rpmarchive_error(rc);
@@ -163,12 +167,15 @@ static PyObject *rpmarchive_writeto(rpmarchiveObject *s,
return NULL;
}
- if (s->archive == NULL)
+ if (s->archive == NULL) {
+ Py_DECREF(fdo);
return rpmarchive_closed();
+ }
Py_BEGIN_ALLOW_THREADS
rc = rpmfiArchiveWriteFile(s->archive, rpmfdGetFd(fdo));
Py_END_ALLOW_THREADS
+ Py_DECREF(fdo);
if (rc)
return rpmarchive_error(rc);
@@ -464,6 +464,7 @@ static PyObject *rpmfiles_archive(rpmfilesObject *s,
} else {
archive = rpmfiNewArchiveReader(fd, s->files, RPMFI_ITER_READ_ARCHIVE);
}
+ Py_DECREF(fdo);
return rpmarchive_Wrap(&rpmarchive_Type, s->files, archive);
}
--
2.33.0