Skip to content

Commit 944c147

Browse files
dschoGit for Windows Build Agent
authored and
Git for Windows Build Agent
committed
Merge pull request #2533 from dscho/try-stat-harder
Fix clone within a directory whose parent isn't readable by the current user
2 parents ed4c479 + e2c58bb commit 944c147

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

compat/mingw.c

+13-1
Original file line numberDiff line numberDiff line change
@@ -1070,7 +1070,19 @@ int mingw_stat(const char *file_name, struct stat *buf)
10701070
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL,
10711071
OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
10721072
if (hnd == INVALID_HANDLE_VALUE) {
1073-
errno = err_win_to_posix(GetLastError());
1073+
DWORD err = GetLastError();
1074+
1075+
if (err == ERROR_ACCESS_DENIED &&
1076+
!mingw_lstat(file_name, buf) &&
1077+
!S_ISLNK(buf->st_mode))
1078+
/*
1079+
* POSIX semantics state to still try to fill
1080+
* information, even if permission is denied to create
1081+
* a file handle.
1082+
*/
1083+
return 0;
1084+
1085+
errno = err_win_to_posix(err);
10741086
return -1;
10751087
}
10761088
result = get_file_info_by_handle(hnd, buf);

0 commit comments

Comments
 (0)