mirror of
https://github.com/reactos/reactos.git
synced 2024-07-29 23:58:44 +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)
|
OUT PVOID *ReturnedState)
|
||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
NTSTATUS Status;
|
|
||||||
PRTL_ACQUIRE_STATE State;
|
PRTL_ACQUIRE_STATE State;
|
||||||
|
NTSTATUS Status, IntStatus;
|
||||||
ULONG ReturnLength, i, OldSize;
|
ULONG ReturnLength, i, OldSize;
|
||||||
SECURITY_QUALITY_OF_SERVICE Sqos;
|
SECURITY_QUALITY_OF_SERVICE Sqos;
|
||||||
OBJECT_ATTRIBUTES ObjectAttributes;
|
OBJECT_ATTRIBUTES ObjectAttributes;
|
||||||
HANDLE ImpersonationToken = 0, ProcessToken;
|
HANDLE ImpersonationToken = 0, ProcessToken;
|
||||||
|
|
||||||
|
DPRINT("RtlAcquirePrivilege(%p, %u, %u, %p)\n", Privilege, NumPriv, Flags, ReturnedState);
|
||||||
|
|
||||||
/* Validate flags */
|
/* Validate flags */
|
||||||
if (Flags & ~(RTL_ACQUIRE_PRIVILEGE_PROCESS | RTL_ACQUIRE_PRIVILEGE_IMPERSONATE))
|
if (Flags & ~(RTL_ACQUIRE_PRIVILEGE_PROCESS | RTL_ACQUIRE_PRIVILEGE_IMPERSONATE))
|
||||||
{
|
{
|
||||||
|
@ -283,6 +285,7 @@ RtlAcquirePrivilege(IN PULONG Privilege,
|
||||||
State->OldPrivileges = RtlAllocateHeap(RtlGetProcessHeap(), 0, ReturnLength);
|
State->OldPrivileges = RtlAllocateHeap(RtlGetProcessHeap(), 0, ReturnLength);
|
||||||
if (State->OldPrivileges)
|
if (State->OldPrivileges)
|
||||||
{
|
{
|
||||||
|
DPRINT("Allocated old privileges: %p\n", State->OldPrivileges);
|
||||||
OldSize = ReturnLength;
|
OldSize = ReturnLength;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -314,6 +317,8 @@ RtlAcquirePrivilege(IN PULONG Privilege,
|
||||||
}
|
}
|
||||||
} while (FALSE);
|
} while (FALSE);
|
||||||
|
|
||||||
|
DPRINT("RtlAcquirePrivilege succeed!\n");
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
|
|
||||||
Cleanup:
|
Cleanup:
|
||||||
|
@ -326,12 +331,12 @@ Cleanup:
|
||||||
/* Do we have to restore previously active impersonation? */
|
/* Do we have to restore previously active impersonation? */
|
||||||
if (State->Flags & RTL_ACQUIRE_PRIVILEGE_IMPERSONATE)
|
if (State->Flags & RTL_ACQUIRE_PRIVILEGE_IMPERSONATE)
|
||||||
{
|
{
|
||||||
Status = ZwSetInformationThread(NtCurrentThread(), ThreadImpersonationToken,
|
IntStatus = ZwSetInformationThread(NtCurrentThread(), ThreadImpersonationToken,
|
||||||
&State->OldImpersonationToken, sizeof(HANDLE));
|
&State->OldImpersonationToken, sizeof(HANDLE));
|
||||||
/* If this ever happens, we're in a really bad situation... */
|
/* 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 */
|
/* And free our state buffer */
|
||||||
RtlFreeHeap(RtlGetProcessHeap(), 0, State);
|
RtlFreeHeap(RtlGetProcessHeap(), 0, State);
|
||||||
|
|
||||||
|
DPRINT("RtlAcquirePrivilege() failed with status: %lx\n", Status);
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
#else
|
#else
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
@ -362,6 +369,8 @@ RtlReleasePrivilege(IN PVOID ReturnedState)
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
PRTL_ACQUIRE_STATE State = (PRTL_ACQUIRE_STATE)ReturnedState;
|
PRTL_ACQUIRE_STATE State = (PRTL_ACQUIRE_STATE)ReturnedState;
|
||||||
|
|
||||||
|
DPRINT("RtlReleasePrivilege(%p)\n", ReturnedState);
|
||||||
|
|
||||||
/* If we had an active impersonation before we acquired privileges */
|
/* If we had an active impersonation before we acquired privileges */
|
||||||
if (State->Flags & RTL_ACQUIRE_PRIVILEGE_IMPERSONATE)
|
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 we used a different buffer for old privileges, just free it */
|
||||||
if ((PVOID)State->OldPrivBuffer != (PVOID)State->OldPrivileges)
|
if ((PVOID)State->OldPrivBuffer != (PVOID)State->OldPrivileges)
|
||||||
{
|
{
|
||||||
|
DPRINT("Releasing old privileges: %p\n", State->OldPrivileges);
|
||||||
RtlFreeHeap(RtlGetProcessHeap(), 0, State->OldPrivileges);
|
RtlFreeHeap(RtlGetProcessHeap(), 0, State->OldPrivileges);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue