SdbpCreateSearchDBContext
NTSTATUS __stdcall SdbpCreateSearchDBContext(
tagSEARCHDBCONTEXT *pContext,
WCHAR **hFileMapping,
const WCHAR *szModuleName,
const WCHAR *pEnvironment,
_RTL_ARRAY *PackageAttributes){
NTSTATUS v7;
WCHAR *v8;
VOID *v9;
INT64 v10;
WCHAR *v11;
__int64 v12;
unsigned int v13;
WCHAR *v14;
VOID *v15;
INT64 v16;
WCHAR *v17;
WCHAR *v19;
char *v20;
INT64 v21;
WCHAR *v22;
WCHAR v23;
WCHAR *v24;
VOID *v25;
INT64 v26;
_WORD *v27;
WCHAR *v28;
WCHAR FileName[264];
__int16 pszSrc[264];
v7 = 0;
memset(pszSrc, 0i64, 0x208u);
v8 = 0i64;
memset(FileName, 0i64, 0x208u);
if( !hFileMapping )
{
v19 = (WCHAR *)AslAlloc(v9, 4, v10);
v20 = (char *)((char *)L"." - (char *)v19);
v14 = v19;
v21 = 2i64;
v22 = v19;
do
{
if( v21 == -2147483644 )
break;
v23 = *(WCHAR *)((char *)v22 + (_QWORD)v20);
if( !v23 )
break;
*v22++ = v23;
--v21;
}
while( v21 );
v24 = v22 - 1;
if( v21 )
v24 = v22;
*v24 = 0;
v8 = (WCHAR *)AslAlloc(v22, 2, v21);
*v8 = 0;
v27 = AslAlloc(v25, 2, v26);
*v27 = 0;
*((_QWORD *)pContext + 3) = v27;
goto LABEL_9;
}
v11 = *hFileMapping;
v12 = -1i64;
do
++v12;
while( v11[v12] );
v13 = v12 + 1;
v14 = (WCHAR *)AslAlloc(v9, 2 * ((int)v12 + 1), v10);
if( !v14 )
{
AslLogCallPrintf(
1ui64,
(INT8 *)"SdbpCreateSearchDBContext",
0xD4ui64,
(INT8 *)"Unable to allocate memory for directory path");
return v7;
}
if( AslPathSplit(v11, v14, v13, FileName, v28) < 0 )
{
AslLogCallPrintf(
1ui64,
(INT8 *)"SdbpCreateSearchDBContext",
0xDFui64,
(INT8 *)"Unable to parse executable path for \"%ws\"");
}
else
{
v17 = (WCHAR *)AslAlloc(v15, 520, v16);
v8 = v17;
if( v17 )
{
if( RtlStringCchCopyW(v17, 0x104ui64, FileName) >= 0 && RtlStringCchCatW(v8, 0x104ui64, (WCHAR *)pszSrc) >= 0 )
{
LABEL_9:
*((_QWORD *)pContext + 7) = 0i64;
*((_QWORD *)pContext + 6) = 0i64;
*((_QWORD *)pContext + 9) = 0i64;
*((_QWORD *)pContext + 8) = 0i64;
*((_QWORD *)pContext + 11) = 0i64;
v7 = 1;
*((_QWORD *)pContext + 1) = hFileMapping;
*((_QWORD *)pContext + 4) = v14;
*((_QWORD *)pContext + 5) = v8;
return v7;
}
}
else
{
AslLogCallPrintf(
1ui64,
(INT8 *)"SdbpCreateSearchDBContext",
0xE5ui64,
(INT8 *)"Unable to allocate memory for full name");
}
}
ExFreePoolWithTag(v14, 0x74705041u);
if( v8 )
ExFreePoolWithTag(v8, 0x74705041u);
return v7;
}Referenced by:
SdbGetDatabaseMatch
SdbpCheckKObject