]> git.ipfire.org Git - people/stevee/pakfire.git/commitdiff
repo: Ensure to close the file descriptor after reading the database
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 8 Mar 2023 11:46:16 +0000 (11:46 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 9 Mar 2023 11:17:28 +0000 (11:17 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/repo.c

index 7789f0f4cfb729e1c5679d536bc9a71871e99fb4..92924e811f37082958b8cce5a332dc7900024aac 100644 (file)
@@ -330,6 +330,7 @@ static int pakfire_repo_download_database(struct pakfire_repo* repo, const char*
 }
 
 static int pakfire_repo_read_metadata(struct pakfire_repo* repo, const char* path, int refresh) {
+       FILE* f = NULL;
        int r;
 
        struct json_object* json = pakfire_json_parse_from_file(repo->pakfire, path);
@@ -375,13 +376,12 @@ static int pakfire_repo_read_metadata(struct pakfire_repo* repo, const char* pat
                        goto ERROR;
 
                // Open database file
-               FILE* f = fopen(database_cache_path, "r");
+               f = fopen(database_cache_path, "r");
                if (!f)
                        goto ERROR;
 
                // Read database
                r = pakfire_repo_read_solv(repo, f, 0);
-               fclose(f);
                if (r) {
                        if (!refresh && errno == ENOENT)
                                goto NOERROR;
@@ -396,6 +396,9 @@ NOERROR:
        r = 0;
 
 ERROR:
+       if (f)
+               fclose(f);
+
        // Free the parsed JSON object
        json_object_put(json);