mirror of
https://github.com/reactos/reactos.git
synced 2024-07-10 22:55:05 +00:00
[RTL]
Add a few DPRINTs. Fix a bug where last status was overrided in case of failure. Still commented out... svn path=/trunk/; revision=58946
This commit is contained in:
parent
3c4b46ea62
commit
f96e0193f4
|
@ -113,13 +113,15 @@ RtlAcquirePrivilege(IN PULONG Privilege,
|
|||
OUT PVOID *ReturnedState)
|
||||
{
|
||||
#if 0
|
||||
NTSTATUS Status;
|
||||
PRTL_ACQUIRE_STATE State;
|
||||
NTSTATUS Status, IntStatus;
|
||||
ULONG ReturnLength, i, OldSize;
|
||||
SECURITY_QUALITY_OF_SERVICE Sqos;
|
||||
OBJECT_ATTRIBUTES ObjectAttributes;
|
||||
HANDLE ImpersonationToken = 0, ProcessToken;
|
||||
|
||||
DPRINT("RtlAcquirePrivilege(%p, %u, %u, %p)\n", Privilege, NumPriv, Flags, ReturnedState);
|
||||
|
||||
/* Validate flags */
|
||||
if (Flags & ~(RTL_ACQUIRE_PRIVILEGE_PROCESS | RTL_ACQUIRE_PRIVILEGE_IMPERSONATE))
|
||||
{
|
||||
|
@ -283,6 +285,7 @@ RtlAcquirePrivilege(IN PULONG Privilege,
|
|||
State->OldPrivileges = RtlAllocateHeap(RtlGetProcessHeap(), 0, ReturnLength);
|
||||
if (State->OldPrivileges)
|
||||
{
|
||||
DPRINT("Allocated old privileges: %p\n", State->OldPrivileges);
|
||||
OldSize = ReturnLength;
|
||||
continue;
|
||||
}
|
||||
|
@ -314,6 +317,8 @@ RtlAcquirePrivilege(IN PULONG Privilege,
|
|||
}
|
||||
} while (FALSE);
|
||||
|
||||
DPRINT("RtlAcquirePrivilege succeed!\n");
|
||||
|
||||
return Status;
|
||||
|
||||
Cleanup:
|
||||
|
@ -326,12 +331,12 @@ Cleanup:
|
|||
/* Do we have to restore previously active impersonation? */
|
||||
if (State->Flags & RTL_ACQUIRE_PRIVILEGE_IMPERSONATE)
|
||||
{
|
||||
Status = ZwSetInformationThread(NtCurrentThread(), ThreadImpersonationToken,
|
||||
&State->OldImpersonationToken, sizeof(HANDLE));
|
||||
IntStatus = ZwSetInformationThread(NtCurrentThread(), ThreadImpersonationToken,
|
||||
&State->OldImpersonationToken, sizeof(HANDLE));
|
||||
/* If this ever happens, we're in a really bad situation... */
|
||||
if (!NT_SUCCESS(Status))
|
||||
if (!NT_SUCCESS(IntStatus))
|
||||
{
|
||||
RtlRaiseStatus(Status);
|
||||
RtlRaiseStatus(IntStatus);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -344,6 +349,8 @@ Cleanup:
|
|||
/* And free our state buffer */
|
||||
RtlFreeHeap(RtlGetProcessHeap(), 0, State);
|
||||
|
||||
DPRINT("RtlAcquirePrivilege() failed with status: %lx\n", Status);
|
||||
|
||||
return Status;
|
||||
#else
|
||||
UNIMPLEMENTED;
|
||||
|
@ -362,6 +369,8 @@ RtlReleasePrivilege(IN PVOID ReturnedState)
|
|||
NTSTATUS Status;
|
||||
PRTL_ACQUIRE_STATE State = (PRTL_ACQUIRE_STATE)ReturnedState;
|
||||
|
||||
DPRINT("RtlReleasePrivilege(%p)\n", ReturnedState);
|
||||
|
||||
/* If we had an active impersonation before we acquired privileges */
|
||||
if (State->Flags & RTL_ACQUIRE_PRIVILEGE_IMPERSONATE)
|
||||
{
|
||||
|
@ -388,6 +397,7 @@ RtlReleasePrivilege(IN PVOID ReturnedState)
|
|||
/* If we used a different buffer for old privileges, just free it */
|
||||
if ((PVOID)State->OldPrivBuffer != (PVOID)State->OldPrivileges)
|
||||
{
|
||||
DPRINT("Releasing old privileges: %p\n", State->OldPrivileges);
|
||||
RtlFreeHeap(RtlGetProcessHeap(), 0, State->OldPrivileges);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue