mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 09:34:43 +00:00
[REACTOS] Fix GetTokenInformation() usage (#2997)
The first call to GetTokenInformation is used to determine the size of a TokenInformation buffer. It should fail and return ERROR_INSUFFICIENT_BUFFER
This commit is contained in:
parent
b338fb7beb
commit
98bbe8358c
4 changed files with 11 additions and 12 deletions
|
@ -65,7 +65,7 @@ RunningAsSYSTEM(VOID)
|
|||
return FALSE;
|
||||
|
||||
/* Retrieve token's information */
|
||||
if (!GetTokenInformation(hToken, TokenUser, NULL, 0, &cbTokenBuffer) &&
|
||||
if (GetTokenInformation(hToken, TokenUser, NULL, 0, &cbTokenBuffer) ||
|
||||
GetLastError() != ERROR_INSUFFICIENT_BUFFER)
|
||||
{
|
||||
goto Quit;
|
||||
|
|
|
@ -53,14 +53,14 @@ DwInitializeSdFromThreadToken (
|
|||
}
|
||||
|
||||
/* Get the size of the token's user */
|
||||
if ((GetTokenInformation(hToken, TokenUser, NULL, 0, &dwUserLength) == FALSE) ||
|
||||
if ((GetTokenInformation(hToken, TokenUser, NULL, 0, &dwUserLength) != FALSE) ||
|
||||
(GetLastError() != ERROR_INSUFFICIENT_BUFFER))
|
||||
{
|
||||
return GetLastError();
|
||||
}
|
||||
|
||||
/* Get the size of the token's primary group */
|
||||
if ((GetTokenInformation(hToken, TokenPrimaryGroup, NULL, 0, &dwGroupLength) == FALSE) ||
|
||||
if ((GetTokenInformation(hToken, TokenPrimaryGroup, NULL, 0, &dwGroupLength) != FALSE) ||
|
||||
(GetLastError() != ERROR_INSUFFICIENT_BUFFER))
|
||||
{
|
||||
return GetLastError();
|
||||
|
|
|
@ -695,9 +695,11 @@ AddUserProfiles(
|
|||
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken))
|
||||
return;
|
||||
|
||||
GetTokenInformation(hToken, TokenUser, NULL, 0, &dwSize);
|
||||
if (dwSize == 0)
|
||||
if (GetTokenInformation(hToken, TokenUser, NULL, 0, &dwSize) ||
|
||||
GetLastError() != ERROR_INSUFFICIENT_BUFFER)
|
||||
{
|
||||
goto done;
|
||||
}
|
||||
|
||||
pTokenUser = HeapAlloc(GetProcessHeap(), 0, dwSize);
|
||||
if (pTokenUser == NULL)
|
||||
|
|
|
@ -179,14 +179,11 @@ IsUserAdmin(VOID)
|
|||
&hToken))
|
||||
goto done;
|
||||
|
||||
dwSize = 0;
|
||||
GetTokenInformation(hToken,
|
||||
TokenGroups,
|
||||
NULL,
|
||||
0,
|
||||
&dwSize);
|
||||
if (dwSize == 0)
|
||||
if (GetTokenInformation(hToken, TokenGroups, NULL, 0, &dwSize) ||
|
||||
GetLastError() != ERROR_INSUFFICIENT_BUFFER)
|
||||
{
|
||||
goto done;
|
||||
}
|
||||
|
||||
pGroups = HeapAlloc(GetProcessHeap(), 0, dwSize);
|
||||
if (pGroups == NULL)
|
||||
|
|
Loading…
Reference in a new issue