mirror of
https://github.com/winfsp/winfsp.git
synced 2025-07-03 17:32:57 -05:00
sys: IRP_MJ_CREATE
This commit is contained in:
@ -368,6 +368,7 @@ VOID FspFsvolCreateComplete(
|
||||
ULONG SecurityDescriptorSize;
|
||||
UNICODE_STRING ReparseFileName;
|
||||
ACCESS_MASK DesiredAccess = IrpSp->Parameters.Create.SecurityContext->DesiredAccess;
|
||||
PPRIVILEGE_SET Privileges = 0;
|
||||
USHORT ShareAccess = IrpSp->Parameters.Create.ShareAccess;
|
||||
ULONG Flags = IrpSp->Flags;
|
||||
KPROCESSOR_MODE RequestorMode =
|
||||
@ -458,7 +459,7 @@ VOID FspFsvolCreateComplete(
|
||||
FALSE,
|
||||
DesiredAccess,
|
||||
AccessState->PreviouslyGrantedAccess,
|
||||
0,
|
||||
&Privileges,
|
||||
IoGetFileObjectGenericMapping(),
|
||||
RequestorMode,
|
||||
&GrantedAccess,
|
||||
@ -468,6 +469,17 @@ VOID FspFsvolCreateComplete(
|
||||
FSP_RETURN();
|
||||
}
|
||||
|
||||
if (0 != Privileges)
|
||||
{
|
||||
Result = SeAppendPrivileges(AccessState, Privileges);
|
||||
SeFreePrivileges(Privileges);
|
||||
if (!NT_SUCCESS(Result))
|
||||
{
|
||||
FspFsvolCreateClose(Irp, Response);
|
||||
FSP_RETURN();
|
||||
}
|
||||
}
|
||||
|
||||
SetFlag(AccessState->PreviouslyGrantedAccess, GrantedAccess);
|
||||
ClearFlag(AccessState->RemainingDesiredAccess, GrantedAccess);
|
||||
}
|
||||
|
Reference in New Issue
Block a user