Implement RtlAddAuditAccessAceEx().

svn path=/trunk/; revision=10125
This commit is contained in:
Eric Kohl 2004-07-15 08:15:49 +00:00
parent b1fb96b44c
commit 64b9c0f3cc
4 changed files with 83 additions and 3 deletions

View file

@ -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);

View file

@ -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

View file

@ -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

View file

@ -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,