mirror of
https://github.com/reactos/reactos.git
synced 2025-02-23 17:05:46 +00:00
[ADVAPI32]
* Move some functions from ac.c to security.c. CORE-8540 svn path=/trunk/; revision=64968
This commit is contained in:
parent
954bd930d0
commit
2252d516b0
2 changed files with 328 additions and 345 deletions
|
@ -8,150 +8,8 @@
|
|||
#include <advapi32.h>
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(advapi);
|
||||
|
||||
/* --- ACL --- */
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
GetAclInformation(PACL pAcl,
|
||||
LPVOID pAclInformation,
|
||||
DWORD nAclInformationLength,
|
||||
ACL_INFORMATION_CLASS dwAclInformationClass)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
Status = RtlQueryInformationAcl(pAcl,
|
||||
pAclInformation,
|
||||
nAclInformationLength,
|
||||
dwAclInformationClass);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastError(RtlNtStatusToDosError(Status));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
InitializeAcl(PACL pAcl,
|
||||
DWORD nAclLength,
|
||||
DWORD dwAclRevision)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
Status = RtlCreateAcl(pAcl,
|
||||
nAclLength,
|
||||
dwAclRevision);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastError(RtlNtStatusToDosError(Status));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
IsValidAcl(PACL pAcl)
|
||||
{
|
||||
return RtlValidAcl (pAcl);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
SetAclInformation(PACL pAcl,
|
||||
LPVOID pAclInformation,
|
||||
DWORD nAclInformationLength,
|
||||
ACL_INFORMATION_CLASS dwAclInformationClass)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
Status = RtlSetInformationAcl(pAcl,
|
||||
pAclInformation,
|
||||
nAclInformationLength,
|
||||
dwAclInformationClass);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastError(RtlNtStatusToDosError(Status));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/* --- ACE --- */
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
AddAccessAllowedAce(PACL pAcl,
|
||||
DWORD dwAceRevision,
|
||||
DWORD AccessMask,
|
||||
PSID pSid)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
Status = RtlAddAccessAllowedAce(pAcl,
|
||||
dwAceRevision,
|
||||
AccessMask,
|
||||
pSid);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastError(RtlNtStatusToDosError(Status));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL WINAPI
|
||||
AddAccessAllowedAceEx(PACL pAcl,
|
||||
DWORD dwAceRevision,
|
||||
DWORD AceFlags,
|
||||
DWORD AccessMask,
|
||||
PSID pSid)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
Status = RtlAddAccessAllowedAceEx(pAcl,
|
||||
dwAceRevision,
|
||||
AceFlags,
|
||||
AccessMask,
|
||||
pSid);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastError(RtlNtStatusToDosError(Status));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
|
@ -183,60 +41,6 @@ AddAccessAllowedObjectAce(PACL pAcl,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
AddAccessDeniedAce(PACL pAcl,
|
||||
DWORD dwAceRevision,
|
||||
DWORD AccessMask,
|
||||
PSID pSid)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
Status = RtlAddAccessDeniedAce(pAcl,
|
||||
dwAceRevision,
|
||||
AccessMask,
|
||||
pSid);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastError(RtlNtStatusToDosError(Status));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL WINAPI
|
||||
AddAccessDeniedAceEx(PACL pAcl,
|
||||
DWORD dwAceRevision,
|
||||
DWORD AceFlags,
|
||||
DWORD AccessMask,
|
||||
PSID pSid)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
Status = RtlAddAccessDeniedAceEx(pAcl,
|
||||
dwAceRevision,
|
||||
AceFlags,
|
||||
AccessMask,
|
||||
pSid);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastError(RtlNtStatusToDosError(Status));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
|
@ -268,96 +72,6 @@ AddAccessDeniedObjectAce(PACL pAcl,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
AddAce(PACL pAcl,
|
||||
DWORD dwAceRevision,
|
||||
DWORD dwStartingAceIndex,
|
||||
LPVOID pAceList,
|
||||
DWORD nAceListLength)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
Status = RtlAddAce(pAcl,
|
||||
dwAceRevision,
|
||||
dwStartingAceIndex,
|
||||
pAceList,
|
||||
nAceListLength);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastError(RtlNtStatusToDosError(Status));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
AddAuditAccessAce(PACL pAcl,
|
||||
DWORD dwAceRevision,
|
||||
DWORD dwAccessMask,
|
||||
PSID pSid,
|
||||
BOOL bAuditSuccess,
|
||||
BOOL bAuditFailure)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
Status = RtlAddAuditAccessAce(pAcl,
|
||||
dwAceRevision,
|
||||
dwAccessMask,
|
||||
pSid,
|
||||
bAuditSuccess,
|
||||
bAuditFailure);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastError(RtlNtStatusToDosError(Status));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL WINAPI
|
||||
AddAuditAccessAceEx(PACL pAcl,
|
||||
DWORD dwAceRevision,
|
||||
DWORD AceFlags,
|
||||
DWORD dwAccessMask,
|
||||
PSID pSid,
|
||||
BOOL bAuditSuccess,
|
||||
BOOL bAuditFailure)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
Status = RtlAddAuditAccessAceEx(pAcl,
|
||||
dwAceRevision,
|
||||
AceFlags,
|
||||
dwAccessMask,
|
||||
pSid,
|
||||
bAuditSuccess,
|
||||
bAuditFailure);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastError(RtlNtStatusToDosError(Status));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
|
@ -393,65 +107,6 @@ AddAuditAccessObjectAce(PACL pAcl,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
DeleteAce(PACL pAcl,
|
||||
DWORD dwAceIndex)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
Status = RtlDeleteAce(pAcl,
|
||||
dwAceIndex);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastError(RtlNtStatusToDosError(Status));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
FindFirstFreeAce(PACL pAcl,
|
||||
LPVOID *pAce)
|
||||
{
|
||||
return RtlFirstFreeAce(pAcl,
|
||||
(PACE*)pAce);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
GetAce(PACL pAcl,
|
||||
DWORD dwAceIndex,
|
||||
LPVOID *pAce)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
Status = RtlGetAce(pAcl,
|
||||
dwAceIndex,
|
||||
pAce);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastError(RtlNtStatusToDosError(Status));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
|
|
|
@ -799,6 +799,250 @@ GetLengthSid(PSID pSid)
|
|||
return (DWORD)RtlLengthSid(pSid);
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
InitializeAcl(PACL pAcl,
|
||||
DWORD nAclLength,
|
||||
DWORD dwAclRevision)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
Status = RtlCreateAcl(pAcl,
|
||||
nAclLength,
|
||||
dwAclRevision);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastError(RtlNtStatusToDosError(Status));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
AddAccessAllowedAce(PACL pAcl,
|
||||
DWORD dwAceRevision,
|
||||
DWORD AccessMask,
|
||||
PSID pSid)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
Status = RtlAddAccessAllowedAce(pAcl,
|
||||
dwAceRevision,
|
||||
AccessMask,
|
||||
pSid);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastError(RtlNtStatusToDosError(Status));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL WINAPI
|
||||
AddAccessAllowedAceEx(PACL pAcl,
|
||||
DWORD dwAceRevision,
|
||||
DWORD AceFlags,
|
||||
DWORD AccessMask,
|
||||
PSID pSid)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
Status = RtlAddAccessAllowedAceEx(pAcl,
|
||||
dwAceRevision,
|
||||
AceFlags,
|
||||
AccessMask,
|
||||
pSid);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastError(RtlNtStatusToDosError(Status));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
AddAccessDeniedAce(PACL pAcl,
|
||||
DWORD dwAceRevision,
|
||||
DWORD AccessMask,
|
||||
PSID pSid)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
Status = RtlAddAccessDeniedAce(pAcl,
|
||||
dwAceRevision,
|
||||
AccessMask,
|
||||
pSid);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastError(RtlNtStatusToDosError(Status));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL WINAPI
|
||||
AddAccessDeniedAceEx(PACL pAcl,
|
||||
DWORD dwAceRevision,
|
||||
DWORD AceFlags,
|
||||
DWORD AccessMask,
|
||||
PSID pSid)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
Status = RtlAddAccessDeniedAceEx(pAcl,
|
||||
dwAceRevision,
|
||||
AceFlags,
|
||||
AccessMask,
|
||||
pSid);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastError(RtlNtStatusToDosError(Status));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
AddAce(PACL pAcl,
|
||||
DWORD dwAceRevision,
|
||||
DWORD dwStartingAceIndex,
|
||||
LPVOID pAceList,
|
||||
DWORD nAceListLength)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
Status = RtlAddAce(pAcl,
|
||||
dwAceRevision,
|
||||
dwStartingAceIndex,
|
||||
pAceList,
|
||||
nAceListLength);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastError(RtlNtStatusToDosError(Status));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
DeleteAce(PACL pAcl,
|
||||
DWORD dwAceIndex)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
Status = RtlDeleteAce(pAcl,
|
||||
dwAceIndex);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastError(RtlNtStatusToDosError(Status));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
FindFirstFreeAce(PACL pAcl,
|
||||
LPVOID *pAce)
|
||||
{
|
||||
return RtlFirstFreeAce(pAcl,
|
||||
(PACE*)pAce);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
GetAce(PACL pAcl,
|
||||
DWORD dwAceIndex,
|
||||
LPVOID *pAce)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
Status = RtlGetAce(pAcl,
|
||||
dwAceIndex,
|
||||
pAce);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastError(RtlNtStatusToDosError(Status));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
GetAclInformation(PACL pAcl,
|
||||
LPVOID pAclInformation,
|
||||
DWORD nAclInformationLength,
|
||||
ACL_INFORMATION_CLASS dwAclInformationClass)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
Status = RtlQueryInformationAcl(pAcl,
|
||||
pAclInformation,
|
||||
nAclInformationLength,
|
||||
dwAclInformationClass);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastError(RtlNtStatusToDosError(Status));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
IsValidAcl(PACL pAcl)
|
||||
{
|
||||
return RtlValidAcl (pAcl);
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
|
@ -892,6 +1136,65 @@ BOOL WINAPI AccessCheckByType(
|
|||
return !*AccessStatus;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
AddAuditAccessAce(PACL pAcl,
|
||||
DWORD dwAceRevision,
|
||||
DWORD dwAccessMask,
|
||||
PSID pSid,
|
||||
BOOL bAuditSuccess,
|
||||
BOOL bAuditFailure)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
Status = RtlAddAuditAccessAce(pAcl,
|
||||
dwAceRevision,
|
||||
dwAccessMask,
|
||||
pSid,
|
||||
bAuditSuccess,
|
||||
bAuditFailure);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastError(RtlNtStatusToDosError(Status));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL WINAPI
|
||||
AddAuditAccessAceEx(PACL pAcl,
|
||||
DWORD dwAceRevision,
|
||||
DWORD AceFlags,
|
||||
DWORD dwAccessMask,
|
||||
PSID pSid,
|
||||
BOOL bAuditSuccess,
|
||||
BOOL bAuditFailure)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
Status = RtlAddAuditAccessAceEx(pAcl,
|
||||
dwAceRevision,
|
||||
AceFlags,
|
||||
dwAccessMask,
|
||||
pSid,
|
||||
bAuditSuccess,
|
||||
bAuditFailure);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastError(RtlNtStatusToDosError(Status));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* PrivilegeCheck EXPORTED
|
||||
*
|
||||
|
@ -919,6 +1222,31 @@ PrivilegeCheck(HANDLE ClientToken,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
SetAclInformation(PACL pAcl,
|
||||
LPVOID pAclInformation,
|
||||
DWORD nAclInformationLength,
|
||||
ACL_INFORMATION_CLASS dwAclInformationClass)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
Status = RtlSetInformationAcl(pAcl,
|
||||
pAclInformation,
|
||||
nAclInformationLength,
|
||||
dwAclInformationClass);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastError(RtlNtStatusToDosError(Status));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* ParseAclStringFlags
|
||||
*/
|
||||
|
|
Loading…
Reference in a new issue