* path.cc (symlink_info::check): Handle (and explain) a special case

when accessing files matching DOS device names on SMB shares.
This commit is contained in:
Corinna Vinschen 2008-07-31 14:48:28 +00:00
parent 9fe98985b3
commit 3462d736b6
2 changed files with 17 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2008-07-31 Corinna Vinschen <corinna@vinschen.de>
* path.cc (symlink_info::check): Handle (and explain) a special case
when accessing files matching DOS device names on SMB shares.
2008-07-31 Corinna Vinschen <corinna@vinschen.de>
* spawn.cc (spawn_guts): Check constructed short pathname for being

View File

@ -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