Commit fd65b0a1 authored by Nikolay Sivov's avatar Nikolay Sivov Committed by Alexandre Julliard

ntdll: Allow NULL return length argument in NtAdjustPrivilegesToken().

parent e810a584
......@@ -611,8 +611,9 @@ AdjustTokenPrivileges( HANDLE TokenHandle, BOOL DisableAllPrivileges,
{
NTSTATUS status;
TRACE("\n");
TRACE("(%p %d %p %d %p %p)\n", TokenHandle, DisableAllPrivileges, NewState, BufferLength,
PreviousState, ReturnLength);
status = NtAdjustPrivilegesToken(TokenHandle, DisableAllPrivileges,
NewState, BufferLength, PreviousState,
ReturnLength);
......
......@@ -4760,6 +4760,41 @@ static void test_default_dacl_owner_sid(void)
CloseHandle( handle );
}
static void test_AdjustTokenPrivileges(void)
{
TOKEN_PRIVILEGES tp, prev;
HANDLE token;
DWORD len;
LUID luid;
BOOL ret;
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &token))
return;
if (!LookupPrivilegeValueA(NULL, SE_BACKUP_NAME, &luid))
{
CloseHandle(token);
return;
}
tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = luid;
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
len = 0xdeadbeef;
ret = AdjustTokenPrivileges(token, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), NULL, &len);
ok(ret, "got %d\n", ret);
ok(len == 0xdeadbeef, "got length %d\n", len);
/* revert */
tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = luid;
tp.Privileges[0].Attributes = 0;
AdjustTokenPrivileges(token, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), &prev, NULL);
CloseHandle(token);
}
START_TEST(security)
{
init();
......@@ -4800,4 +4835,5 @@ START_TEST(security)
test_CreateRestrictedToken();
test_TokenIntegrityLevel();
test_default_dacl_owner_sid();
test_AdjustTokenPrivileges();
}
......@@ -223,7 +223,7 @@ NTSTATUS WINAPI NtAdjustPrivilegesToken(
ret = wine_server_call( req );
if (PreviousState)
{
*ReturnLength = reply->len + FIELD_OFFSET( TOKEN_PRIVILEGES, Privileges );
if (ReturnLength) *ReturnLength = reply->len + FIELD_OFFSET( TOKEN_PRIVILEGES, Privileges );
PreviousState->PrivilegeCount = reply->len / sizeof(LUID_AND_ATTRIBUTES);
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment