SeConvertStringSidToSid
NTSTATUS __stdcall SeConvertStringSidToSid(PWCHAR Str1){
VOID **v1;
PVOID *v2;
NTSTATUS v4;
INT64 v5;
INT64 v6;
void *v7;
INT64 v8;
__int64 v10;
__int64 v11;
UINT64 v12;
__int64 v13;
int v14;
ULONG v15;
void *v16;
WCHAR *v17;
const WCHAR *v18;
INT64 a7;
v2 = v1;
v18 = 0i64;
a7 = 0i64;
if( !Str1 || !v1 )
return -1073741811;
v4 = LocalpConvertStringSidToSid(Str1, v1, &v18);
if( v4 < 0 )
{
v10 = -1i64;
do
++v10;
while( Str1[v10] );
if( (unsigned int)(v18 - Str1) != v10 )
{
v4 = -1073741704;
SddlpFree(*v2);
*v2 = 0i64;
return v4;
}
return 0;
}
v6 = LookupSidInTable(Str1, 0i64, 0i64, v5, v17, 0, (INT64)&a7);
v7 = (void *)a7;
v8 = v6;
if( v6 )
{
v12 = *(_QWORD *)(v6 + 16);
if( v12 )
{
v13 = -1i64;
do
++v13;
while( Str1[v13] );
if( v13 == *(_DWORD *)(v6 + 12) )
{
v14 = *(unsigned __int8 *)(v12 + 1);
v15 = 4 * v14 + 8;
SddlpAlloc(4 * v14 + 8, v12);
*v2 = v16;
if( v16 )
{
v4 = RtlCopySid(v15, v16, *(PSID *)(v8 + 16));
if( v4 < 0 )
{
SddlpFree(*v2);
*v2 = 0i64;
}
}
else
{
v4 = -1073741801;
}
}
else
{
v4 = -1073741704;
}
goto LABEL_26;
}
}
if( !a7 )
return v4;
v11 = -1i64;
do
++v11;
while( Str1[v11] );
if( v11 == 2 )
{
*v2 = (PVOID)a7;
return 0;
}
LABEL_26:
if( v7 )
SddlpFree(v7);
return v4;
}Referenced by:
No references.