mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 16:36:33 +00:00
[NTOSKRNL]
Implement TokenOrigin case in NtSetInformationToken svn path=/trunk/; revision=62246
This commit is contained in:
parent
5ebaa3c3dd
commit
6a9cca1ef8
1 changed files with 41 additions and 5 deletions
|
@ -2042,13 +2042,44 @@ NtSetInformationToken(IN HANDLE TokenHandle,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
case TokenOrigin:
|
case TokenOrigin:
|
||||||
{
|
{
|
||||||
DPRINT1("Unhandled TokenInformationClass: 0x%lx\n",
|
TOKEN_ORIGIN TokenOrigin;
|
||||||
TokenInformationClass);
|
|
||||||
Status = STATUS_NOT_IMPLEMENTED;
|
_SEH2_TRY
|
||||||
|
{
|
||||||
|
/* Copy the token origin */
|
||||||
|
TokenOrigin = *(PTOKEN_ORIGIN)TokenInformation;
|
||||||
|
}
|
||||||
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||||
|
{
|
||||||
|
Status = _SEH2_GetExceptionCode();
|
||||||
|
goto Cleanup;
|
||||||
|
}
|
||||||
|
_SEH2_END;
|
||||||
|
|
||||||
|
/* Check for TCB privilege */
|
||||||
|
if (!SeSinglePrivilegeCheck(SeTcbPrivilege, PreviousMode))
|
||||||
|
{
|
||||||
|
Status = STATUS_PRIVILEGE_NOT_HELD;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Lock the token */
|
||||||
|
SepAcquireTokenLockExclusive(Token);
|
||||||
|
|
||||||
|
/* Check if there is no token origin set yet */
|
||||||
|
if ((Token->OriginatingLogonSession.LowPart == 0) &&
|
||||||
|
(Token->OriginatingLogonSession.HighPart == 0))
|
||||||
|
{
|
||||||
|
/* Set the token origin */
|
||||||
|
Token->OriginatingLogonSession =
|
||||||
|
TokenOrigin.OriginatingLogonSession;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Unlock the token */
|
||||||
|
SepReleaseTokenLock(Token);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2064,6 +2095,11 @@ Cleanup:
|
||||||
ObDereferenceObject(Token);
|
ObDereferenceObject(Token);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
DPRINT1("NtSetInformationToken failed with Status 0x%lx\n", Status);
|
||||||
|
}
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue