From: Michael Tremer Date: Mon, 19 Sep 2022 17:40:03 +0000 (+0000) Subject: packager: Abort if payload could not be written X-Git-Tag: 0.9.28~301 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=131c14495534ed4dc0cf805f7dc6a0f172b7a942;p=pakfire.git packager: Abort if payload could not be written Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/packager.c b/src/libpakfire/packager.c index 43ac98961..193043183 100644 --- a/src/libpakfire/packager.c +++ b/src/libpakfire/packager.c @@ -444,6 +444,8 @@ int pakfire_packager_finish(struct pakfire_packager* packager, FILE* f) { // Write the payload r = pakfire_compress(packager->pakfire, a, packager->filelist, nevra, PAKFIRE_COMPRESS_SHOW_THROUGHPUT, PAKFIRE_PACKAGER_DIGESTS); + if (r) + goto ERROR; // Flush all buffers to disk fflush(f); @@ -462,6 +464,7 @@ int pakfire_packager_finish_to_directory(struct pakfire_packager* packager, const char* target, char** result) { char path[PATH_MAX]; char tmppath[PATH_MAX]; + FILE* f = NULL; int r = 1; // target cannot be empty @@ -494,14 +497,12 @@ int pakfire_packager_finish_to_directory(struct pakfire_packager* packager, goto ERROR; // Create a temporary result file - FILE* f = pakfire_mktemp(tmppath); + f = pakfire_mktemp(tmppath); if (!f) goto ERROR; // Write the finished package r = pakfire_packager_finish(packager, f); - fclose(f); - if (r) { ERROR(packager->pakfire, "pakfire_packager_finish() failed: %m\n"); goto ERROR; @@ -529,6 +530,9 @@ int pakfire_packager_finish_to_directory(struct pakfire_packager* packager, r = 0; ERROR: + if (f) + fclose(f); + // Remove temporary file if (r && *tmppath) unlink(tmppath);