mirror of
https://github.com/reactos/reactos.git
synced 2024-09-05 18:26:53 +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 ACCESS_MASK AccessMask,
|
||||||
IN PSID Sid);
|
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
|
VOID STDCALL
|
||||||
RtlDeleteCriticalSection (PCRITICAL_SECTION CriticalSection);
|
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
|
; ReactOS Operating System
|
||||||
;
|
;
|
||||||
|
@ -294,6 +294,7 @@ RtlAddAce@20
|
||||||
RtlAddAtomToAtomTable@12
|
RtlAddAtomToAtomTable@12
|
||||||
;RtlAddAttributeActionToRXact
|
;RtlAddAttributeActionToRXact
|
||||||
RtlAddAuditAccessAce@24
|
RtlAddAuditAccessAce@24
|
||||||
|
RtlAddAuditAccessAceEx@28
|
||||||
;RtlAddCompoundAce
|
;RtlAddCompoundAce
|
||||||
RtlAddRange@36
|
RtlAddRange@36
|
||||||
RtlAdjustPrivilege@16
|
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
|
; ReactOS Operating System
|
||||||
;
|
;
|
||||||
|
@ -294,6 +294,7 @@ RtlAddAce=RtlAddAce@20
|
||||||
RtlAddAtomToAtomTable=RtlAddAtomToAtomTable@12
|
RtlAddAtomToAtomTable=RtlAddAtomToAtomTable@12
|
||||||
;RtlAddAttributeActionToRXact
|
;RtlAddAttributeActionToRXact
|
||||||
RtlAddAuditAccessAce=RtlAddAuditAccessAce@24
|
RtlAddAuditAccessAce=RtlAddAuditAccessAce@24
|
||||||
|
RtlAddAuditAccessAceEx=RtlAddAuditAccessAceEx@28
|
||||||
;RtlAddCompoundAce
|
;RtlAddCompoundAce
|
||||||
RtlAddRange=RtlAddRange@36
|
RtlAddRange=RtlAddRange@36
|
||||||
RtlAdjustPrivilege=RtlAdjustPrivilege@16
|
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
|
static VOID
|
||||||
RtlpDeleteData(PVOID Ace,
|
RtlpDeleteData(PVOID Ace,
|
||||||
ULONG AceSize,
|
ULONG AceSize,
|
||||||
|
|
Loading…
Reference in a new issue