From aba60128964a9345ff91bee110cdf0fc3580005c Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 13 Mar 2021 14:37:45 +0000 Subject: [PATCH] util: Repair pakfire_mkparentdir Signed-off-by: Michael Tremer --- src/libpakfire/util.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/libpakfire/util.c b/src/libpakfire/util.c index a445b57c4..6549241a8 100644 --- a/src/libpakfire/util.c +++ b/src/libpakfire/util.c @@ -507,21 +507,21 @@ static int pakfire_mkparentdir(const char* path) { return 1; // We have arrived at the top of the tree - if (*dirname == '.' || *dirname == '/') + if (*dirname == '.' || strcmp(dirname, "/") == 0) return 0; // Ensure the parent directory exists r = pakfire_mkparentdir(dirname); - if (r) { - if (errno == EEXIST) - r = 0; - + if (r) goto END; - } // Create this directory r = mkdir(dirname, 0); + // Ignore when the directory already exists + if (r && errno == EEXIST) + r = 0; + END: free(dirname); @@ -529,7 +529,9 @@ END: } FILE* pakfire_mktemp(char* path) { - pakfire_mkparentdir(path); + int r = pakfire_mkparentdir(path); + if (r) + return NULL; // Create a temporary result file int fd = mkostemp(path, O_CLOEXEC); -- 2.47.3