From: Sam Vilain <samv@maia.lan>
In the case that a object directory exists, but is not writable, the code path that tries to create it is followed and the returned errno and path that of the directory tried to be created. The resultant error message is confusing.
So, if the mkstemp() fails with EPERM, don't try to create the directory - return straight away.
Signed-off-by: Sam Vilain <sam@vilain.net> --- sha1_file.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
Show changes to sha1_file.c +1 −1
diff --git a/sha1_file.c b/sha1_file.c index ab2b520..7662330 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -2231,7 +2231,7 @@ static int create_tmpfile(char *buffer, size_t bufsiz, const char *filename) memcpy(buffer, filename, dirlen); strcpy(buffer + dirlen, "tmp_obj_XXXXXX"); fd = mkstemp(buffer); - if (fd < 0 && dirlen) { + if (fd < 0 && dirlen && (errno != EPERM)) { /* Make sure the directory exists */ memcpy(buffer, filename, dirlen); buffer[dirlen-1] = 0;
-- debian.1.5.6.1