This commit is contained in:
Bill Zissimopoulos 2016-01-03 20:55:53 -08:00
parent 60ad79c06b
commit cdd10dbdff
3 changed files with 7 additions and 2 deletions

View File

@ -45,7 +45,8 @@ typedef NTSTATUS FSP_FILE_SYSTEM_OPERATION(FSP_FILE_SYSTEM *, FSP_FSCTL_TRANSACT
typedef struct _FSP_FILE_SYSTEM_INTERFACE typedef struct _FSP_FILE_SYSTEM_INTERFACE
{ {
NTSTATUS (*AccessCheck)(FSP_FILE_SYSTEM *FileSystem, NTSTATUS (*AccessCheck)(FSP_FILE_SYSTEM *FileSystem,
FSP_FSCTL_TRANSACT_REQ *Request, DWORD DesiredAccess, PDWORD PGrantedAccess); FSP_FSCTL_TRANSACT_REQ *Request, BOOLEAN AllowTraverseCheck, DWORD DesiredAccess,
PDWORD PGrantedAccess);
NTSTATUS (*GetSecurity)(FSP_FILE_SYSTEM *FileSystem, NTSTATUS (*GetSecurity)(FSP_FILE_SYSTEM *FileSystem,
PWSTR FileName, PDWORD PFileAttributes, PWSTR FileName, PDWORD PFileAttributes,
PSECURITY_DESCRIPTOR SecurityDescriptor, SIZE_T *PSecurityDescriptorSize); PSECURITY_DESCRIPTOR SecurityDescriptor, SIZE_T *PSecurityDescriptorSize);

View File

@ -42,7 +42,8 @@ FSP_API NTSTATUS FspAccessCheck(FSP_FILE_SYSTEM *FileSystem,
PDWORD PGrantedAccess) PDWORD PGrantedAccess)
{ {
if (0 != FileSystem->Interface->AccessCheck) if (0 != FileSystem->Interface->AccessCheck)
return FileSystem->Interface->AccessCheck(FileSystem, Request, DesiredAccess, PGrantedAccess); return FileSystem->Interface->AccessCheck(FileSystem,
Request, AllowTraverseCheck, DesiredAccess, PGrantedAccess);
if (0 == FileSystem->Interface->GetSecurity) if (0 == FileSystem->Interface->GetSecurity)
{ {

View File

@ -40,7 +40,9 @@ static NTSTATUS FspFileSystemOpCreate_FileCreate(FSP_FILE_SYSTEM *FileSystem,
if (!NT_SUCCESS(Result)) if (!NT_SUCCESS(Result))
return FspFileSystemSendResponseWithStatus(FileSystem, Request, Result); return FspFileSystemSendResponseWithStatus(FileSystem, Request, Result);
FileNode->Flags = 0;
memset(&FileNode->ShareAccess, 0, sizeof FileNode->ShareAccess); memset(&FileNode->ShareAccess, 0, sizeof FileNode->ShareAccess);
FspShareCheck(FileSystem, GrantedAccess, Request->Req.Create.ShareAccess, FileNode); FspShareCheck(FileSystem, GrantedAccess, Request->Req.Create.ShareAccess, FileNode);
memset(&Response, 0, sizeof Response); memset(&Response, 0, sizeof Response);
@ -129,6 +131,7 @@ static NTSTATUS FspFileSystemOpCreate_FileOpenIf(FSP_FILE_SYSTEM *FileSystem,
if (!NT_SUCCESS(Result)) if (!NT_SUCCESS(Result))
return FspFileSystemSendResponseWithStatus(FileSystem, Request, Result); return FspFileSystemSendResponseWithStatus(FileSystem, Request, Result);
FileNode->Flags = 0;
memset(&FileNode->ShareAccess, 0, sizeof FileNode->ShareAccess); memset(&FileNode->ShareAccess, 0, sizeof FileNode->ShareAccess);
} }