diff options
Diffstat (limited to 'winsup/cygwin/path.cc')
-rw-r--r-- | winsup/cygwin/path.cc | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 66e174771..64d8759b6 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -2440,6 +2440,18 @@ symlink_info::check (char *path, const suffix_info *suffixes, unsigned opt, { debug_printf ("%p = NtQueryDirectoryFile(%S)", status, &dirname); + if (status == STATUS_NO_SUCH_FILE) + { + /* This can happen when trying to access files + which match DOS device names on SMB shares. + NtOpenFile failed with STATUS_ACCESS_DENIED, + but the NtQueryDirectoryFile tells us the + file doesn't exist. We're suspicious in this + case and retry with the next suffix instead of + just giving up. */ + set_error (ENOENT); + continue; + } fileattr = 0; } else |