]> git.ipfire.org Git - pakfire.git/commitdiff
archive: Close archive if an entry could not be found
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 21 May 2021 11:08:58 +0000 (11:08 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 21 May 2021 11:08:58 +0000 (11:08 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/archive.c

index 5d451d50c2e75a185a1f4245ec91888091d7133e..89d99dfc2a933bd62b3a08c48f0587c2473d5952 100644 (file)
@@ -158,7 +158,13 @@ static int open_archive_and_find(PakfireArchive archive, struct archive** a,
        if (r)
                return r;
 
-       return find_archive_entry(entry, *a, filename);
+       r = find_archive_entry(entry, *a, filename);
+
+       // Close archive on error
+       if (r)
+               close_archive(archive, *a);
+
+       return r;
 }
 
 static int open_archive_and_read(PakfireArchive archive, const char* filename,
@@ -1029,6 +1035,9 @@ static int pakfire_archive_load_filelist(PakfireArchive archive) {
 
        r = pakfire_filelist_create_from_file(&archive->filelist,
                archive->pakfire, data, archive->format);
+       if (r) {
+               ERROR(archive->pakfire, "Could not parse filelist\n");
+       }
 
        free(data);