CVS: winex/dlls/ntdll nt.c,1.16,1.17
[email protected] 31 Jul 2007 19:41:20 -0000
| Newsgroups | gmane.comp.emulators.winex.cvs |
|---|---|
| Message-ID | <[email protected]> |
Subject: winex/dlls/ntdll nt.c,1.16,1.17Update of /var/lib/cvsd/cvsroot/winex/dlls/ntdll
In directory agravaine:/tmp/cvs-serv31551/dlls/ntdll
Modified Files:
nt.c
Log Message:
- implement LookupPrivilegeName[AW]
- implement LookupPrivilegeValue[AW]
- better implement NtQueryInformationToken() for TokenPrivileges class
Index: nt.c
===================================================================
RCS file: /var/lib/cvsd/cvsroot/winex/dlls/ntdll/nt.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- nt.c 29 Mar 2007 14:01:45 -0000 1.16
+++ nt.c 31 Jul 2007 19:41:18 -0000 1.17
@@ -374,7 +374,7 @@
{
unsigned int len = 0;
- FIXME("(%08x,%d,%p,%ld,%p): stub\n",
+ FIXME("(%08x,%d,%p,%ld,%p): partial stub\n",
token,tokeninfoclass,tokeninfo,tokeninfolength,retlen);
switch (tokeninfoclass)
@@ -386,7 +386,7 @@
len = sizeof(TOKEN_GROUPS);
break;
case TokenPrivileges:
- len = sizeof(TOKEN_PRIVILEGES);
+ len = sizeof(TOKEN_PRIVILEGES) + (19 * sizeof (LUID_AND_ATTRIBUTES));
break;
case TokenOwner:
len = sizeof(TOKEN_OWNER);
@@ -450,7 +450,32 @@
if (tokeninfo)
{
TOKEN_PRIVILEGES *tpriv = tokeninfo;
- tpriv->PrivilegeCount = 1;
+
+ /* These settings match those for an admin-priv token on XP SP2 */
+ LUID_AND_ATTRIBUTES LuidArr[20] = {
+ {{SE_CHANGE_NOTIFY_PRIVILEGE, 0}, SE_PRIVILEGE_ENABLED | SE_PRIVILEGE_ENABLED_BY_DEFAULT},
+ {{SE_SECURITY_PRIVILEGE, 0}, 0},
+ {{SE_BACKUP_PRIVILEGE, 0}, 0},
+ {{SE_RESTORE_PRIVILEGE, 0}, 0},
+ {{SE_SYSTEMTIME_PRIVILEGE, 0}, 0},
+ {{SE_SHUTDOWN_PRIVILEGE, 0}, 0},
+ {{SE_REMOTE_SHUTDOWN_PRIVILEGE, 0}, 0},
+ {{SE_TAKE_OWNERSHIP_PRIVILEGE, 0}, 0},
+ {{SE_DEBUG_PRIVILEGE, 0}, SE_PRIVILEGE_ENABLED},
+ {{SE_SYSTEM_ENVIRONMENT_PRIVILEGE, 0}, 0},
+ {{SE_SYSTEM_PROFILE_PRIVILEGE, 0}, 0},
+ {{SE_PROF_SINGLE_PROCESS_PRIVILEGE, 0}, 0},
+ {{SE_INC_BASE_PRIORITY_PRIVILEGE, 0}, 0},
+ {{SE_LOAD_DRIVER_PRIVILEGE, 0}, SE_PRIVILEGE_ENABLED},
+ {{SE_CREATE_PAGEFILE_PRIVILEGE, 0}, 0},
+ {{SE_INCREASE_QUOTA_PRIVILEGE, 0}, 0},
+ {{SE_UNDOCK_PRIVILEGE, 0}, SE_PRIVILEGE_ENABLED},
+ {{SE_MANAGE_VOLUME_PRIVILEGE, 0}, 0},
+ {{SE_IMPERSONATE_PRIVILEGE, 0}, SE_PRIVILEGE_ENABLED | SE_PRIVILEGE_ENABLED_BY_DEFAULT},
+ {{SE_CREATE_GLOBAL_PRIVILEGE, 0}, SE_PRIVILEGE_ENABLED | SE_PRIVILEGE_ENABLED_BY_DEFAULT}};
+
+ tpriv->PrivilegeCount = 20;
+ memcpy (tpriv->Privileges, LuidArr, sizeof (LuidArr));
}
break;
case TokenOwner: