[NTOSKRNL] Implement SeComputeQuotaInformationSize()

This commit is contained in:
Pierre Schweitzer 2018-10-27 19:32:42 +02:00
parent 19cabfc763
commit 2ce071d19a
No known key found for this signature in database
GPG key ID: 7545556C3D585B0B
2 changed files with 48 additions and 0 deletions

View file

@ -485,6 +485,12 @@ SeReleaseSidAndAttributesArray(
_In_ KPROCESSOR_MODE AccessMode,
_In_ BOOLEAN CaptureIfKernel);
NTSTATUS
NTAPI
SeComputeQuotaInformationSize(
_In_ PSECURITY_DESCRIPTOR SecurityDescriptor,
_Out_ PULONG QuotaInfoSize);
NTSTATUS
NTAPI
SepCaptureAcl(

View file

@ -1429,4 +1429,46 @@ SeAssignSecurity(
PoolType);
}
/*
* @implemented
*/
_IRQL_requires_max_(PASSIVE_LEVEL)
NTSTATUS
NTAPI
SeComputeQuotaInformationSize(
_In_ PSECURITY_DESCRIPTOR SecurityDescriptor,
_Out_ PULONG QuotaInfoSize)
{
PSID Group;
PACL Dacl;
PAGED_CODE();
*QuotaInfoSize = 0;
/* Validate security descriptor revision */
if (((PISECURITY_DESCRIPTOR)SecurityDescriptor)->Revision != SECURITY_DESCRIPTOR_REVISION1)
{
return STATUS_UNKNOWN_REVISION;
}
/* Get group and DACL, if any */
Group = SepGetGroupFromDescriptor(SecurityDescriptor);
Dacl = SepGetDaclFromDescriptor(SecurityDescriptor);
/* Return SID length if any */
if (Group != NULL)
{
*QuotaInfoSize = ALIGN_UP_BY(RtlLengthSid(Group), sizeof(ULONG));
}
/* Return DACL if any */
if (Dacl != NULL)
{
*QuotaInfoSize += ALIGN_UP_BY(Dacl->AclSize, sizeof(ULONG));
}
return STATUS_SUCCESS;
}
/* EOF */