1
0
mirror of https://github.com/winfsp/winfsp.git synced 2025-12-27 14:30:25 -06:00

dll: fuse: multiple improvements and fixes

- Symlinks: Now supports conventing a directory into a symlink reparse
point.

- Symlinks: The determination of whether a symlink is a file or
directory is now possible for file systems that do not support slashdot
(/.) queries.

- EA: Now allows the removal of non-existant EA without error (this is
allowed on Windows).
This commit is contained in:
Bill Zissimopoulos
2021-11-13 23:27:34 +00:00
parent ec3386c2b3
commit 0b94e8bc6a
8 changed files with 215 additions and 65 deletions

View File

@@ -325,6 +325,13 @@ FSP_API NTSTATUS FspAccessCheckEx(FSP_FILE_SYSTEM *FileSystem,
goto exit;
}
/*
* We allow some file systems (notably FUSE) to open reparse points
* regardless of the FILE_DIRECTORY_FILE / FILE_NON_DIRECTORY_FILE options.
*/
if (0 != (FileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) && FileSystem->UmNoReparsePointsDirCheck)
goto skip_reparse_dir_check;
if ((Request->Req.Create.CreateOptions & FILE_DIRECTORY_FILE) &&
0 == (FileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
@@ -337,6 +344,9 @@ FSP_API NTSTATUS FspAccessCheckEx(FSP_FILE_SYSTEM *FileSystem,
Result = STATUS_FILE_IS_A_DIRECTORY;
goto exit;
}
skip_reparse_dir_check:
;
}
if (Request->Req.Create.UserMode)