mirror of
https://github.com/reactos/reactos.git
synced 2024-07-08 13:45:06 +00:00
Implement RtlAddAuditAccessAceEx().
svn path=/trunk/; revision=10125
This commit is contained in:
parent
b1fb96b44c
commit
64b9c0f3cc
|
@ -1,4 +1,4 @@
|
|||
/* $Id: rtl.h,v 1.45 2004/07/08 22:05:48 gvg Exp $
|
||||
/* $Id: rtl.h,v 1.46 2004/07/15 08:15:49 ekohl Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
|
@ -131,6 +131,15 @@ RtlAddAccessDeniedAceEx (IN OUT PACL Acl,
|
|||
IN ACCESS_MASK AccessMask,
|
||||
IN PSID Sid);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
RtlAddAuditAccessAceEx(IN OUT PACL Acl,
|
||||
IN ULONG Revision,
|
||||
IN ULONG Flags,
|
||||
IN ACCESS_MASK AccessMask,
|
||||
IN PSID Sid,
|
||||
IN BOOLEAN Success,
|
||||
IN BOOLEAN Failure);
|
||||
|
||||
VOID STDCALL
|
||||
RtlDeleteCriticalSection (PCRITICAL_SECTION CriticalSection);
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; $Id: ntdll.def,v 1.124 2004/07/08 00:40:30 weiden Exp $
|
||||
; $Id: ntdll.def,v 1.125 2004/07/15 08:15:20 ekohl Exp $
|
||||
;
|
||||
; ReactOS Operating System
|
||||
;
|
||||
|
@ -294,6 +294,7 @@ RtlAddAce@20
|
|||
RtlAddAtomToAtomTable@12
|
||||
;RtlAddAttributeActionToRXact
|
||||
RtlAddAuditAccessAce@24
|
||||
RtlAddAuditAccessAceEx@28
|
||||
;RtlAddCompoundAce
|
||||
RtlAddRange@36
|
||||
RtlAdjustPrivilege@16
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; $Id: ntdll.edf,v 1.114 2004/07/08 00:40:30 weiden Exp $
|
||||
; $Id: ntdll.edf,v 1.115 2004/07/15 08:15:21 ekohl Exp $
|
||||
;
|
||||
; ReactOS Operating System
|
||||
;
|
||||
|
@ -294,6 +294,7 @@ RtlAddAce=RtlAddAce@20
|
|||
RtlAddAtomToAtomTable=RtlAddAtomToAtomTable@12
|
||||
;RtlAddAttributeActionToRXact
|
||||
RtlAddAuditAccessAce=RtlAddAuditAccessAce@24
|
||||
RtlAddAuditAccessAceEx=RtlAddAuditAccessAceEx@28
|
||||
;RtlAddCompoundAce
|
||||
RtlAddRange=RtlAddRange@36
|
||||
RtlAdjustPrivilege=RtlAdjustPrivilege@16
|
||||
|
|
|
@ -395,6 +395,75 @@ RtlAddAuditAccessAce(PACL Acl,
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
NTSTATUS STDCALL
|
||||
RtlAddAuditAccessAceEx(PACL Acl,
|
||||
ULONG Revision,
|
||||
ULONG Flags,
|
||||
ACCESS_MASK AccessMask,
|
||||
PSID Sid,
|
||||
BOOLEAN Success,
|
||||
BOOLEAN Failure)
|
||||
{
|
||||
PACE Ace;
|
||||
|
||||
if (Success != FALSE)
|
||||
{
|
||||
Flags |= SUCCESSFUL_ACCESS_ACE_FLAG;
|
||||
}
|
||||
|
||||
if (Failure != FALSE)
|
||||
{
|
||||
Flags |= FAILED_ACCESS_ACE_FLAG;
|
||||
}
|
||||
|
||||
if (!RtlValidSid(Sid))
|
||||
{
|
||||
return STATUS_INVALID_SID;
|
||||
}
|
||||
|
||||
if (Acl->AclRevision > MAX_ACL_REVISION ||
|
||||
Revision > MAX_ACL_REVISION)
|
||||
{
|
||||
return STATUS_REVISION_MISMATCH;
|
||||
}
|
||||
|
||||
if (Revision < Acl->AclRevision)
|
||||
{
|
||||
Revision = Acl->AclRevision;
|
||||
}
|
||||
|
||||
if (!RtlFirstFreeAce(Acl, &Ace))
|
||||
{
|
||||
return STATUS_INVALID_ACL;
|
||||
}
|
||||
|
||||
if (Ace == NULL)
|
||||
{
|
||||
return STATUS_ALLOTTED_SPACE_EXCEEDED;
|
||||
}
|
||||
|
||||
if (((PVOID)Ace + RtlLengthSid(Sid) + sizeof(ACE)) >= ((PVOID)Acl + Acl->AclSize))
|
||||
{
|
||||
return STATUS_ALLOTTED_SPACE_EXCEEDED;
|
||||
}
|
||||
|
||||
Ace->Header.AceFlags = Flags;
|
||||
Ace->Header.AceType = SYSTEM_AUDIT_ACE_TYPE;
|
||||
Ace->Header.AceSize = RtlLengthSid(Sid) + sizeof(ACE);
|
||||
Ace->AccessMask = AccessMask;
|
||||
RtlCopySid(RtlLengthSid(Sid),
|
||||
(PSID)(Ace + 1),
|
||||
Sid);
|
||||
Acl->AceCount++;
|
||||
Acl->AclRevision = Revision;
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
static VOID
|
||||
RtlpDeleteData(PVOID Ace,
|
||||
ULONG AceSize,
|
||||
|
|
Loading…
Reference in a new issue