diff options
author | Daniel Stenberg <daniel@haxx.se> | 2018-08-24 10:01:42 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2018-08-24 10:01:42 +0200 |
commit | eb1592ec84bec8899a664201a7f2298ace059ea9 (patch) | |
tree | d746c456c0769caa7977f5220c64570d7d6dac43 | |
parent | 6b6c2b8d57a69a256f7a727784876d8cc37aa669 (diff) | |
download | curl-bagder/issue-2739.tar.gz |
curl: fix time-of-check, time-of-use race in dir creationbagder/issue-2739
Detected by Coverity
Fixes #2739
-rw-r--r-- | src/tool_dirhie.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/tool_dirhie.c b/src/tool_dirhie.c index a01f9dc5f..36c06941c 100644 --- a/src/tool_dirhie.c +++ b/src/tool_dirhie.c @@ -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; |