AuthzBasepGetInternalSecurityAttributesCopyoutBufferSize
NTSTATUS __stdcall AuthzBasepGetInternalSecurityAttributesCopyoutBufferSize(
_AUTHZBASEP_SECURITY_ATTRIBUTES_INFORMATION *pInfo,
UINT64 *pBufferSize){
unsigned __int64 v4;
unsigned int v5;
unsigned int v6;
NTSTATUS InternalSecurityAttributeValueCopyoutBufferSize;
_LIST_ENTRY *p_SecurityAttributesList;
_LIST_ENTRY *Flink;
unsigned int v10;
unsigned int v11;
unsigned int v12;
unsigned int v14;
if( !pInfo || !pBufferSize )
return -1073741811;
v4 = 112i64 * pInfo->SecurityAttributeCount;
if( v4 > 0xFFFFFFFF )
return -1073741675;
v5 = v4 + 48;
v6 = -1;
if( v5 >= 0x30 )
v6 = v5;
InternalSecurityAttributeValueCopyoutBufferSize = v5 < 0x30 ? 0xC0000095 : 0;
if( v5 >= 0x30 )
{
p_SecurityAttributesList = &pInfo->SecurityAttributesList;
Flink = pInfo->SecurityAttributesList.Flink;
while( Flink != p_SecurityAttributesList )
{
v10 = (v6 + 1) & 0xFFFFFFFE;
if( v10 < v6 )
return -1073741675;
v11 = -1;
v12 = v10 + LOWORD(Flink[2].Flink);
if( v12 >= v10 )
v11 = v10 + LOWORD(Flink[2].Flink);
InternalSecurityAttributeValueCopyoutBufferSize = v12 < v10 ? 0xC0000095 : 0;
v14 = v11;
if( v12 < v10 )
return InternalSecurityAttributeValueCopyoutBufferSize;
InternalSecurityAttributeValueCopyoutBufferSize = AuthzBasepGetInternalSecurityAttributeValueCopyoutBufferSize(
(__int64)Flink,
&v14);
if( InternalSecurityAttributeValueCopyoutBufferSize < 0 )
return InternalSecurityAttributeValueCopyoutBufferSize;
Flink = Flink->Flink;
v6 = v14;
}
*(_DWORD *)pBufferSize = v6;
}
return InternalSecurityAttributeValueCopyoutBufferSize;
}Referenced by:
No references.