More complete stubs for DuplicateTokenEx and NtAdjustPrivilegesToken
Dmitry Timoshkov
dmitry at baikal.ru
Wed Feb 9 06:48:07 CST 2005
Hello,
Changelog:
Dmitry Timoshkov <dmitry at codeweavers.com>
More complete stubs for DuplicateTokenEx and NtAdjustPrivilegesToken.
diff -up cvs/hq/wine/dlls/advapi32/security.c wine/dlls/advapi32/security.c
--- cvs/hq/wine/dlls/advapi32/security.c 2005-01-06 15:17:26.000000000 +0800
+++ wine/dlls/advapi32/security.c 2005-02-09 20:37:51.000000000 +0800
@@ -2996,10 +2996,17 @@ BOOL WINAPI DuplicateTokenEx(
TOKEN_TYPE TokenType,
PHANDLE DuplicateTokenHandle )
{
- FIXME("%p 0x%08lx 0x%08x 0x%08x %p - stub\n", ExistingTokenHandle, dwDesiredAccess,
- ImpersonationLevel, TokenType, DuplicateTokenHandle);
+ OBJECT_ATTRIBUTES attr;
- return FALSE;
+ attr.Length = sizeof(attr);
+ attr.RootDirectory = 0;
+ attr.ObjectName = NULL;
+ attr.Attributes = (lpTokenAttributes && lpTokenAttributes->bInheritHandle) ? OBJ_INHERIT : 0;
+ attr.SecurityDescriptor = lpTokenAttributes ? lpTokenAttributes->lpSecurityDescriptor : NULL;
+ attr.SecurityQualityOfService = NULL;
+
+ return set_ntstatus( NtDuplicateToken(ExistingTokenHandle, dwDesiredAccess, &attr,
+ ImpersonationLevel, TokenType, DuplicateTokenHandle) );
}
BOOL WINAPI DuplicateToken(
diff -up cvs/hq/wine/dlls/ntdll/nt.c wine/dlls/ntdll/nt.c
--- cvs/hq/wine/dlls/ntdll/nt.c 2005-01-31 08:53:59.000000000 +0800
+++ wine/dlls/ntdll/nt.c 2005-02-09 20:37:51.000000000 +0800
@@ -162,9 +162,11 @@ NTSTATUS WINAPI NtAdjustPrivilegesToken(
OUT PTOKEN_PRIVILEGES PreviousState,
OUT PDWORD ReturnLength)
{
- FIXME("(%p,0x%08x,%p,0x%08lx,%p,%p),stub!\n",
- TokenHandle, DisableAllPrivileges, NewState, BufferLength, PreviousState, ReturnLength);
- return 0;
+ FIXME("(%p,%d,%p,0x%08lx,%p,%p),stub!\n",
+ TokenHandle, DisableAllPrivileges, NewState, BufferLength, PreviousState, ReturnLength);
+
+ return NtQueryInformationToken(TokenHandle, TokenPrivileges, PreviousState,
+ BufferLength, ReturnLength);
}
/******************************************************************************
@@ -221,8 +223,7 @@ NTSTATUS WINAPI NtQueryInformationToken(
#endif /* 0 */
}
- /* FIXME: what if retlen == NULL ? */
- *retlen = len;
+ if (retlen) *retlen = len;
if (tokeninfolength < len)
return STATUS_BUFFER_TOO_SMALL;
diff -up cvs/hq/wine/include/winternl.h wine/include/winternl.h
--- cvs/hq/wine/include/winternl.h 2005-01-31 08:54:06.000000000 +0800
+++ wine/include/winternl.h 2005-02-09 20:37:51.000000000 +0800
@@ -1396,6 +1396,7 @@ NTSTATUS WINAPI NtDeleteKey(HKEY);
NTSTATUS WINAPI NtDeleteValueKey(HKEY,const UNICODE_STRING *);
NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG);
NTSTATUS WINAPI NtDuplicateObject(HANDLE,HANDLE,HANDLE,PHANDLE,ACCESS_MASK,ULONG,ULONG);
+NTSTATUS WINAPI NtDuplicateToken(HANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,PHANDLE);
NTSTATUS WINAPI NtEnumerateKey(HKEY,ULONG,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
NTSTATUS WINAPI NtEnumerateValueKey(HKEY,ULONG,KEY_VALUE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
NTSTATUS WINAPI NtFlushBuffersFile(HANDLE,IO_STATUS_BLOCK*);
More information about the wine-patches
mailing list