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