]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
curl: fix time-of-check, time-of-use race in dir creation
authorDaniel Stenberg <daniel@haxx.se>
Fri, 24 Aug 2018 08:01:42 +0000 (10:01 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Sat, 25 Aug 2018 21:38:08 +0000 (23:38 +0200)
Patch-by: Jay Satiro
Detected by Coverity
Fixes #2739
Closes #2912

src/tool_dirhie.c

index a01f9dc5f8bf43e69f91a4b18bdc5e06badfc7a2..36c06941c4be781e505b0cb6f4b82a3c2d4cf8a8 100644 (file)
@@ -139,12 +139,10 @@ CURLcode create_dir_hierarchy(const char *outfile, FILE *errors)
         else
           snprintf(dirbuildup, outlen, "%s%s", DIR_CHAR, tempdir);
       }
-      if(access(dirbuildup, F_OK) == -1) {
-        if(-1 == mkdir(dirbuildup, (mode_t)0000750)) {
-          show_dir_errno(errors, dirbuildup);
-          result = CURLE_WRITE_ERROR;
-          break; /* get out of loop */
-        }
+      if((-1 == mkdir(dirbuildup, (mode_t)0000750)) && (errno != EEXIST)) {
+        show_dir_errno(errors, dirbuildup);
+        result = CURLE_WRITE_ERROR;
+        break; /* get out of loop */
       }
     }
     tempdir = tempdir2;