in PPLGuard/utils.cpp [611:646]
BOOL TokenIsNotRestricted(HANDLE hToken, PBOOL pbIsNotRestricted)
{
BOOL bReturnValue = FALSE;
DWORD dwSize = 0;
PTOKEN_GROUPS pTokenGroups = NULL;
if (!GetTokenInformation(hToken, TokenRestrictedSids, NULL, dwSize, &dwSize))
{
if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
{
PrintLastError(L"GetTokenInformation");
goto end;
}
}
pTokenGroups = (PTOKEN_GROUPS)LocalAlloc(LPTR, dwSize);
if (!pTokenGroups)
goto end;
if (!GetTokenInformation(hToken, TokenRestrictedSids, pTokenGroups, dwSize, &dwSize))
{
PrintLastError(L"GetTokenInformation");
goto end;
}
*pbIsNotRestricted = pTokenGroups->GroupCount == 0;
bReturnValue = TRUE;
end:
if (pTokenGroups)
LocalFree(pTokenGroups);
return bReturnValue;
}