From c1f317c34881fc90619339e80d744b5fd7b2b73d Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Sun, 3 Jan 2016 17:59:07 -0800 Subject: [PATCH] dll: WIP --- inc/winfsp/winfsp.h | 26 ++++++++++++++++---------- src/dll/access.c | 4 +--- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/inc/winfsp/winfsp.h b/inc/winfsp/winfsp.h index a2ede271..8e978123 100644 --- a/inc/winfsp/winfsp.h +++ b/inc/winfsp/winfsp.h @@ -44,16 +44,22 @@ typedef VOID FSP_FILE_SYSTEM_DISPATCHER(FSP_FILE_SYSTEM *, FSP_FSCTL_TRANSACT_RE typedef NTSTATUS FSP_FILE_SYSTEM_OPERATION(FSP_FILE_SYSTEM *, FSP_FSCTL_TRANSACT_REQ *); typedef struct _FSP_FILE_SYSTEM_INTERFACE { - NTSTATUS (*AccessCheck)(FSP_FILE_SYSTEM *, - FSP_FSCTL_TRANSACT_REQ *, DWORD, PDWORD); - NTSTATUS (*GetSecurity)(FSP_FILE_SYSTEM *, - PWSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, SIZE_T *); - NTSTATUS (*FileCreate)(FSP_FILE_SYSTEM *, - FSP_FSCTL_TRANSACT_REQ *, FSP_FILE_NODE **FileNode); - NTSTATUS (*FileOpen)(FSP_FILE_SYSTEM *, - FSP_FSCTL_TRANSACT_REQ *, FSP_FILE_NODE **FileNode); - NTSTATUS (*FileClose)(FSP_FILE_SYSTEM *, - FSP_FSCTL_TRANSACT_REQ *, FSP_FILE_NODE *FileNode); + NTSTATUS (*AccessCheck)(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, DWORD DesiredAccess, PDWORD PGrantedAccess); + NTSTATUS (*GetAttributes)(FSP_FILE_SYSTEM *FileSystem, + PWSTR FileName, PDWORD PAttributes); + NTSTATUS (*SetAttributes)(FSP_FILE_SYSTEM *FileSystem, + PWSTR FileName, DWORD Attributes); + NTSTATUS (*GetSecurity)(FSP_FILE_SYSTEM *FileSystem, + PWSTR FileName, PSECURITY_DESCRIPTOR SecurityDescriptor, SIZE_T *PSecurityDescriptorSize); + NTSTATUS (*SetSecurity)(FSP_FILE_SYSTEM *FileSystem, + PWSTR FileName, PSECURITY_DESCRIPTOR SecurityDescriptor, SIZE_T SecurityDescriptorSize); + NTSTATUS (*FileCreate)(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FILE_NODE **PFileNode); + NTSTATUS (*FileOpen)(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FILE_NODE **PFileNode); + NTSTATUS (*FileClose)(FSP_FILE_SYSTEM *FileSystem, + FSP_FSCTL_TRANSACT_REQ *Request, FSP_FILE_NODE *FileNode); } FSP_FILE_SYSTEM_INTERFACE; typedef struct _FSP_FILE_SYSTEM { diff --git a/src/dll/access.c b/src/dll/access.c index 74d5b1ad..275867f1 100644 --- a/src/dll/access.c +++ b/src/dll/access.c @@ -25,9 +25,7 @@ static NTSTATUS FspGetFileSecurityDescriptor(FSP_FILE_SYSTEM *FileSystem, for (;;) { NTSTATUS Result = FileSystem->Interface->GetSecurity(FileSystem, - FileName, - OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION, - *PSecurityDescriptor, PSecurityDescriptorSize); + FileName, *PSecurityDescriptor, PSecurityDescriptorSize); if (STATUS_BUFFER_OVERFLOW != Result) return Result;