mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 17:34:57 +00:00
some Nt vs. Zw fixes
svn path=/trunk/; revision=17990
This commit is contained in:
parent
6ec323ac74
commit
775f129dc9
2 changed files with 21 additions and 9 deletions
|
@ -1090,6 +1090,18 @@ NtDuplicateToken(
|
||||||
OUT PHANDLE NewTokenHandle
|
OUT PHANDLE NewTokenHandle
|
||||||
);
|
);
|
||||||
|
|
||||||
|
NTSYSCALLAPI
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ZwDuplicateToken(
|
||||||
|
IN HANDLE ExistingTokenHandle,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
|
||||||
|
IN BOOLEAN EffectiveOnly,
|
||||||
|
IN TOKEN_TYPE TokenType,
|
||||||
|
OUT PHANDLE NewTokenHandle
|
||||||
|
);
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
NtEnumerateBootEntries(
|
NtEnumerateBootEntries(
|
||||||
|
|
|
@ -29,7 +29,7 @@ RtlImpersonateSelf(IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel)
|
||||||
|
|
||||||
PAGED_CODE_RTL();
|
PAGED_CODE_RTL();
|
||||||
|
|
||||||
Status = NtOpenProcessToken(NtCurrentProcess(),
|
Status = ZwOpenProcessToken(NtCurrentProcess(),
|
||||||
TOKEN_DUPLICATE,
|
TOKEN_DUPLICATE,
|
||||||
&ProcessToken);
|
&ProcessToken);
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
|
@ -53,7 +53,7 @@ RtlImpersonateSelf(IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel)
|
||||||
|
|
||||||
ObjAttr.SecurityQualityOfService = &Sqos;
|
ObjAttr.SecurityQualityOfService = &Sqos;
|
||||||
|
|
||||||
Status = NtDuplicateToken(ProcessToken,
|
Status = ZwDuplicateToken(ProcessToken,
|
||||||
TOKEN_IMPERSONATE,
|
TOKEN_IMPERSONATE,
|
||||||
&ObjAttr,
|
&ObjAttr,
|
||||||
Sqos.EffectiveOnly, /* why both here _and_ in Sqos? */
|
Sqos.EffectiveOnly, /* why both here _and_ in Sqos? */
|
||||||
|
@ -66,7 +66,7 @@ RtlImpersonateSelf(IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel)
|
||||||
return(Status);
|
return(Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
Status = NtSetInformationThread(NtCurrentThread(),
|
Status = ZwSetInformationThread(NtCurrentThread(),
|
||||||
ThreadImpersonationToken,
|
ThreadImpersonationToken,
|
||||||
&ImpersonationToken,
|
&ImpersonationToken,
|
||||||
sizeof(HANDLE));
|
sizeof(HANDLE));
|
||||||
|
@ -75,8 +75,8 @@ RtlImpersonateSelf(IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel)
|
||||||
DPRINT1("NtSetInformationThread() failed (Status %lx)\n", Status);
|
DPRINT1("NtSetInformationThread() failed (Status %lx)\n", Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
NtClose(ImpersonationToken);
|
ZwClose(ImpersonationToken);
|
||||||
NtClose(ProcessToken);
|
ZwClose(ProcessToken);
|
||||||
|
|
||||||
return(Status);
|
return(Status);
|
||||||
}
|
}
|
||||||
|
@ -103,14 +103,14 @@ RtlAdjustPrivilege(IN ULONG Privilege,
|
||||||
|
|
||||||
if (CurrentThread)
|
if (CurrentThread)
|
||||||
{
|
{
|
||||||
Status = NtOpenThreadToken (NtCurrentThread (),
|
Status = ZwOpenThreadToken (NtCurrentThread (),
|
||||||
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,
|
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,
|
||||||
FALSE,
|
FALSE,
|
||||||
&TokenHandle);
|
&TokenHandle);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Status = NtOpenProcessToken (NtCurrentProcess (),
|
Status = ZwOpenProcessToken (NtCurrentProcess (),
|
||||||
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,
|
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,
|
||||||
&TokenHandle);
|
&TokenHandle);
|
||||||
}
|
}
|
||||||
|
@ -128,13 +128,13 @@ RtlAdjustPrivilege(IN ULONG Privilege,
|
||||||
NewState.Privileges[0].Luid.HighPart = 0;
|
NewState.Privileges[0].Luid.HighPart = 0;
|
||||||
NewState.Privileges[0].Attributes = (Enable) ? SE_PRIVILEGE_ENABLED : 0;
|
NewState.Privileges[0].Attributes = (Enable) ? SE_PRIVILEGE_ENABLED : 0;
|
||||||
|
|
||||||
Status = NtAdjustPrivilegesToken (TokenHandle,
|
Status = ZwAdjustPrivilegesToken (TokenHandle,
|
||||||
FALSE,
|
FALSE,
|
||||||
&NewState,
|
&NewState,
|
||||||
sizeof(TOKEN_PRIVILEGES),
|
sizeof(TOKEN_PRIVILEGES),
|
||||||
&OldState,
|
&OldState,
|
||||||
&ReturnLength);
|
&ReturnLength);
|
||||||
NtClose (TokenHandle);
|
ZwClose (TokenHandle);
|
||||||
if (Status == STATUS_NOT_ALL_ASSIGNED)
|
if (Status == STATUS_NOT_ALL_ASSIGNED)
|
||||||
{
|
{
|
||||||
DPRINT1 ("Failed to assign all privileges\n");
|
DPRINT1 ("Failed to assign all privileges\n");
|
||||||
|
|
Loading…
Reference in a new issue