From: Michael Tremer Date: Wed, 8 Dec 2021 16:03:48 +0000 (+0000) Subject: _pakfire: archive: Raise proper exception when file could not be read X-Git-Tag: 0.9.28~859 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9b25811c02f4b76f17e3b3a83bf45428d74fd0d3;p=pakfire.git _pakfire: archive: Raise proper exception when file could not be read Signed-off-by: Michael Tremer --- diff --git a/src/_pakfire/archive.c b/src/_pakfire/archive.c index 665178635..ced521b8b 100644 --- a/src/_pakfire/archive.c +++ b/src/_pakfire/archive.c @@ -85,16 +85,19 @@ static PyObject* Archive_read(ArchiveObject* self, PyObject* args) { char* data = NULL; size_t data_size = 0; - int ret = pakfire_archive_read(self->archive, filename, &data, &data_size); - if (ret) { - free(data); + int r = pakfire_archive_read(self->archive, filename, &data, &data_size); + if (r) { + PyErr_SetFromErrno(PyExc_OSError); + return NULL; + } + // Return None if there was no data + if (!data) Py_RETURN_NONE; - } - // XXX This is not ideal since PyBytes_FromStringAndSize creates a - // copy of data. + // Create a copy of data and return it to the user PyObject* bytes = PyBytes_FromStringAndSize(data, data_size); + free(data); return bytes;