mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-02 04:13:34 +00:00
[NTOSKRNL]
- Fix logic in PsReferenceEffectiveToken svn path=/trunk/; revision=62206
This commit is contained in:
@@ -698,25 +698,7 @@ PsReferenceEffectiveToken(IN PETHREAD Thread,
|
||||
|
||||
/* Check if we don't have impersonation info */
|
||||
Process = Thread->ThreadsProcess;
|
||||
if (!Thread->ActiveImpersonationInfo)
|
||||
{
|
||||
/* Fast Reference the Token */
|
||||
Token = ObFastReferenceObject(&Process->Token);
|
||||
|
||||
/* Check if we got the Token or if we got locked */
|
||||
if (!Token)
|
||||
{
|
||||
/* Lock the Process */
|
||||
PspLockProcessSecurityShared(Process);
|
||||
|
||||
/* Do a Locked Fast Reference */
|
||||
Token = ObFastReferenceObjectLocked(&Process->Token);
|
||||
|
||||
/* Unlock the Process */
|
||||
PspUnlockProcessSecurityShared(Process);
|
||||
}
|
||||
}
|
||||
else
|
||||
if (Thread->ActiveImpersonationInfo)
|
||||
{
|
||||
/* Lock the Process */
|
||||
PspLockProcessSecurityShared(Process);
|
||||
@@ -742,6 +724,22 @@ PsReferenceEffectiveToken(IN PETHREAD Thread,
|
||||
PspUnlockProcessSecurityShared(Process);
|
||||
}
|
||||
|
||||
/* Fast Reference the Token */
|
||||
Token = ObFastReferenceObject(&Process->Token);
|
||||
|
||||
/* Check if we got the Token or if we got locked */
|
||||
if (!Token)
|
||||
{
|
||||
/* Lock the Process */
|
||||
PspLockProcessSecurityShared(Process);
|
||||
|
||||
/* Do a Locked Fast Reference */
|
||||
Token = ObFastReferenceObjectLocked(&Process->Token);
|
||||
|
||||
/* Unlock the Process */
|
||||
PspUnlockProcessSecurityShared(Process);
|
||||
}
|
||||
|
||||
/* Return the token */
|
||||
*TokenType = TokenPrimary;
|
||||
*EffectiveOnly = FALSE;
|
||||
|
||||
Reference in New Issue
Block a user