sha1_file.c:create_tmpfile(): Fix race when creating loose object dirs
[gitweb.git] / sha1_file.c
index 06784fb95af2ddbdbfc6ed97e6ccf2ac920393b3..68ccb048acb64f735eab975dec30f3e87e231968 100644 (file)
@@ -2787,7 +2787,9 @@ static int create_tmpfile(char *buffer, size_t bufsiz, const char *filename)
                /* Make sure the directory exists */
                memcpy(buffer, filename, dirlen);
                buffer[dirlen-1] = 0;
-               if (mkdir(buffer, 0777) || adjust_shared_perm(buffer))
+               if (mkdir(buffer, 0777) && errno != EEXIST)
+                       return -1;
+               if (adjust_shared_perm(buffer))
                        return -1;
 
                /* Try again */