From 8f0f5b3d9e9e0169b11149351b44b8760095aea6 Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Wed, 8 Jun 2016 22:45:26 -0700 Subject: [PATCH] dll: fsp_fuse_op_enter, fsp_fuse_op_leave --- src/dll/fuse/fuseintf.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/dll/fuse/fuseintf.c b/src/dll/fuse/fuseintf.c index 0c579de9..50d120df 100644 --- a/src/dll/fuse/fuseintf.c +++ b/src/dll/fuse/fuseintf.c @@ -118,12 +118,23 @@ NTSTATUS fsp_fuse_op_enter(FSP_FILE_SYSTEM *FileSystem, FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response) { NTSTATUS Result; + HANDLE Token; Result = FspFileSystemOpEnter(FileSystem, Request, Response); if (!NT_SUCCESS(Result)) return Result; - return fsp_fuse_op_set_context(FileSystem, 0); + if (FspFsctlTransactCreateKind == Request->Kind) + Token = (HANDLE)Request->Req.Create.AccessToken; + else if (FspFsctlTransactSetInformationKind == Request->Kind && + 10/*FileRenameInformation*/ == Request->Req.SetInformation.FileInformationClass) + Token = (HANDLE)Request->Req.SetInformation.Info.Rename.AccessToken; + else if (FspFsctlTransactSetSecurityKind == Request->Kind) + Token = (HANDLE)Request->Req.SetSecurity.AccessToken; + else + Token = 0; + + return fsp_fuse_op_set_context(FileSystem, Token); } NTSTATUS fsp_fuse_op_leave(FSP_FILE_SYSTEM *FileSystem, @@ -133,8 +144,8 @@ NTSTATUS fsp_fuse_op_leave(FSP_FILE_SYSTEM *FileSystem, context = fsp_fuse_get_context(0); context->fuse = 0; - context->uid = 0; - context->gid = 0; + context->uid = -1; + context->gid = -1; FspFileSystemOpLeave(FileSystem, Request, Response);