26#define WIN32_NO_STATUS
40#define GetCurrentProcessToken() ((HANDLE)~(ULONG_PTR)3)
41#define GetCurrentThreadToken() ((HANDLE)~(ULONG_PTR)4)
42#define GetCurrentThreadEffectiveToken() ((HANDLE)~(ULONG_PTR)5)
44#ifndef PROCESS_QUERY_LIMITED_INFORMATION
45#define PROCESS_QUERY_LIMITED_INFORMATION 0x1000
49#define PROCESS_ALL_ACCESS_NT4 (PROCESS_ALL_ACCESS & ~0xf000)
50#define PROCESS_ALL_ACCESS_VISTA (PROCESS_ALL_ACCESS | 0xf000)
52#ifndef EVENT_QUERY_STATE
53#define EVENT_QUERY_STATE 0x0001
56#ifndef SEMAPHORE_QUERY_STATE
57#define SEMAPHORE_QUERY_STATE 0x0001
60#ifndef THREAD_SET_LIMITED_INFORMATION
61#define THREAD_SET_LIMITED_INFORMATION 0x0400
62#define THREAD_QUERY_LIMITED_INFORMATION 0x0800
65#define THREAD_ALL_ACCESS_NT4 (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3ff)
66#define THREAD_ALL_ACCESS_VISTA (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xffff)
68#define expect_eq(expr, value, type, format) { type ret_ = expr; ok((value) == ret_, #expr " expected " format " got " format "\n", (value), (ret_)); }
134static NTSTATUS (
WINAPI *pNtCreateFile)(
PHANDLE,
ACCESS_MASK,
POBJECT_ATTRIBUTES,
PIO_STATUS_BLOCK,
PLARGE_INTEGER,
ULONG,
ULONG,
ULONG,
ULONG,
PVOID,
ULONG);
159 else if (
strlen(sidstr) >
sizeof(*debugsid_str) - 1)
195 pConvertStringSecurityDescriptorToSecurityDescriptorA =
196 (
void *)
GetProcAddress(
hmod,
"ConvertStringSecurityDescriptorToSecurityDescriptorA" );
197 pConvertStringSecurityDescriptorToSecurityDescriptorW =
198 (
void *)
GetProcAddress(
hmod,
"ConvertStringSecurityDescriptorToSecurityDescriptorW" );
199 pConvertSecurityDescriptorToStringSecurityDescriptorA =
200 (
void *)
GetProcAddress(
hmod,
"ConvertSecurityDescriptorToStringSecurityDescriptorA" );
212 pSetSecurityDescriptorControl = (
void *)
GetProcAddress(
hmod,
"SetSecurityDescriptorControl");
219 pGetWindowsAccountDomainSid = (
void *)
GetProcAddress(
hmod,
"GetWindowsAccountDomainSid");
220 pGetSidIdentifierAuthority = (
void *)
GetProcAddress(
hmod,
"GetSidIdentifierAuthority");
222 pGetExplicitEntriesFromAclW = (
void *)
GetProcAddress(
hmod,
"GetExplicitEntriesFromAclW");
237 ok_(__FILE__,
line)(!
ret,
"GetKernelObjectSecurity should fail\n");
239 ok_(__FILE__,
line)(needed != 0xdeadbeef,
"GetKernelObjectSecurity should return required buffer length\n");
249 ok_(__FILE__,
line)(needed ==
length || needed == 0 ,
"GetKernelObjectSecurity should return %u instead of %u\n",
length, needed);
258 BOOL owner_defaulted;
267 ok_(__FILE__,
line)(!owner_defaulted,
"Defaulted is true\n");
277 BOOL group_defaulted;
286 ok_(__FILE__,
line)(!group_defaulted,
"Defaulted is true\n");
298 { { {0x00,0x00,0x33,0x44,0x55,0x66} },
"S-1-860116326-1" },
299 { { {0x00,0x00,0x01,0x02,0x03,0x04} },
"S-1-16909060-1" },
300 { { {0x00,0x00,0x00,0x01,0x02,0x03} },
"S-1-66051-1" },
301 { { {0x00,0x00,0x00,0x00,0x01,0x02} },
"S-1-258-1" },
302 { { {0x00,0x00,0x00,0x00,0x00,0x02} },
"S-1-2-1" },
303 { { {0x00,0x00,0x00,0x00,0x00,0x0c} },
"S-1-12-1" },
312 {
"AC", WinBuiltinAnyPackageSid,
TRUE },
313 {
"AN", WinAnonymousSid },
314 {
"AO", WinBuiltinAccountOperatorsSid },
315 {
"AU", WinAuthenticatedUserSid },
316 {
"BA", WinBuiltinAdministratorsSid },
317 {
"BG", WinBuiltinGuestsSid },
318 {
"BO", WinBuiltinBackupOperatorsSid },
319 {
"BU", WinBuiltinUsersSid },
320 {
"CA", WinAccountCertAdminsSid,
TRUE},
321 {
"CG", WinCreatorGroupSid },
322 {
"CO", WinCreatorOwnerSid },
323 {
"DA", WinAccountDomainAdminsSid,
TRUE},
324 {
"DC", WinAccountComputersSid,
TRUE},
325 {
"DD", WinAccountControllersSid,
TRUE},
326 {
"DG", WinAccountDomainGuestsSid,
TRUE},
327 {
"DU", WinAccountDomainUsersSid,
TRUE},
328 {
"EA", WinAccountEnterpriseAdminsSid,
TRUE},
329 {
"ED", WinEnterpriseControllersSid },
330 {
"IU", WinInteractiveSid },
331 {
"LA", WinAccountAdministratorSid },
332 {
"LG", WinAccountGuestSid },
333 {
"LS", WinLocalServiceSid },
334 {
"NO", WinBuiltinNetworkConfigurationOperatorsSid },
335 {
"NS", WinNetworkServiceSid },
336 {
"NU", WinNetworkSid },
337 {
"PA", WinAccountPolicyAdminsSid,
TRUE},
338 {
"PO", WinBuiltinPrintOperatorsSid },
339 {
"PS", WinSelfSid },
340 {
"PU", WinBuiltinPowerUsersSid },
341 {
"RC", WinRestrictedCodeSid },
342 {
"RD", WinBuiltinRemoteDesktopUsersSid },
343 {
"RE", WinBuiltinReplicatorSid },
344 {
"RS", WinAccountRasAndIasServersSid,
TRUE },
345 {
"RU", WinBuiltinPreWindows2000CompatibleAccessSid },
346 {
"SA", WinAccountSchemaAdminsSid,
TRUE },
347 {
"SO", WinBuiltinSystemOperatorsSid },
348 {
"SU", WinServiceSid },
349 {
"SY", WinLocalSystemSid },
350 {
"WD", WinWorldSid },
353 const char noSubAuthStr[] =
"S-1-5";
355 PSID psid, domain_sid;
360 if( !pConvertStringSidToSidA )
362 win_skip(
"ConvertSidToStringSidA or ConvertStringSidToSidA not available\n");
366 r = pConvertStringSidToSidA(
NULL,
NULL );
367 ok( !
r,
"expected failure with NULL parameters\n" );
371 "expected GetLastError() is ERROR_INVALID_PARAMETER, got %d\n",
374 r = pConvertStringSidToSidA( refs[0].refStr,
NULL );
376 "expected GetLastError() is ERROR_INVALID_PARAMETER, got %d\n",
379 r = pConvertStringSidToSidA(
NULL, &
str );
381 "expected GetLastError() is ERROR_INVALID_PARAMETER, got %d\n",
384 r = pConvertStringSidToSidA( noSubAuthStr, &psid );
386 "expected failure with no sub authorities\n" );
388 "expected GetLastError() is ERROR_INVALID_SID, got %d\n",
391 ok(pConvertStringSidToSidA(
"S-1-5-21-93476-23408-4576", &psid),
"ConvertStringSidToSidA failed\n");
399 for(
i = 0;
i <
sizeof(refs) /
sizeof(refs[0]);
i++ )
401 r =
AllocateAndInitializeSid( &refs[
i].auth, 1,1,0,0,0,0,0,0,0,
403 ok(
r,
"failed to allocate sid\n" );
405 ok(
r,
"failed to convert sid\n" );
409 "incorrect sid, expected %s, got %s\n", refs[
i].refStr,
str );
415 r = pConvertStringSidToSidA( refs[
i].refStr, &psid );
416 ok(
r,
"failed to parse sid string\n" );
420 sizeof(refs[
i].auth) ),
421 "string sid %s didn't parse to expected value\n"
422 "(got 0x%04x%08x, expected 0x%04x%08x)\n",
430 MAKEWORD( refs[
i].auth.Value[1], refs[
i].auth.Value[0] ),
432 MAKEWORD( refs[
i].auth.Value[3], refs[
i].auth.Value[2] ) ) );
438 r = pConvertStringSidToSidA(
"AN", &psid);
441 win_skip(
"String constant format not supported\n");
446 AllocateAndInitializeSid(&domain_ident, 4,
SECURITY_NT_NON_UNIQUE, 0, 0, 0, 0, 0, 0, 0, &domain_sid);
448 for(
i = 0;
i <
sizeof(strsid_table) /
sizeof(strsid_table[0]);
i++)
451 r = pConvertStringSidToSidA(strsid_table[
i].
str, &psid);
461 char *sid_string, *well_known_sid_string;
465 if (strsid_table[
i].sid_type == WinAccountAdministratorSid ||
466 strsid_table[
i].sid_type == WinAccountGuestSid)
468 for (
n = 1;
n <= 3;
n++)
475 trace(
"%s => %s\n", strsid_table[
i].
str, sid_string);
478 r = pCreateWellKnownSid(strsid_table[
i].sid_type, domain_sid,
buf, &
size);
479 ok(
r,
"%u: CreateWellKnownSid(%u) error %u\n",
i, strsid_table[
i].sid_type,
GetLastError());
482 ok(
r,
"%u: ConvertSidToStringSi(%u) error %u\n",
i, strsid_table[
i].sid_type,
GetLastError());
484 trace(
"%u => %s\n", strsid_table[
i].sid_type, well_known_sid_string);
486 ok(
strcmp(sid_string, well_known_sid_string) == 0,
487 "%u: (%u) expected %s, got %s\n",
i, strsid_table[
i].sid_type, well_known_sid_string, sid_string);
498 trace(
" %s: couldn't be converted\n", strsid_table[
i].
str);
507 GUID ObjectType = {0x12345678, 0x1234, 0x5678, {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88}};
508 GUID InheritedObjectType = {0x23456789, 0x2345, 0x6786, {0x2, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99}};
514 char szObjectTypeName[] =
"ObjectTypeName";
515 char szInheritedObjectTypeName[] =
"InheritedObjectTypeName";
516 char szTrusteeName[] =
"szTrusteeName";
519 memset( &ZeroGuid, 0x00,
sizeof (ZeroGuid) );
523 pBuildTrusteeWithObjectsAndNameA = (
void *)
GetProcAddress (
hmod,
"BuildTrusteeWithObjectsAndNameA" );
524 pBuildTrusteeWithObjectsAndSidA = (
void *)
GetProcAddress (
hmod,
"BuildTrusteeWithObjectsAndSidA" );
526 if( !pBuildTrusteeWithSidA || !pBuildTrusteeWithNameA ||
527 !pBuildTrusteeWithObjectsAndNameA || !pBuildTrusteeWithObjectsAndSidA ||
531 if ( !
AllocateAndInitializeSid( &auth, 1, 42, 0,0,0,0,0,0,0,&psid ) )
533 trace(
"failed to init SID\n" );
538 memset( &trustee, 0xff,
sizeof trustee );
539 pBuildTrusteeWithSidA( &trustee, psid );
543 "MultipleTrusteeOperation wrong\n");
546 ok( trustee.
ptstrName == psid,
"ptstrName wrong\n" );
549 memset( &trustee, 0xff,
sizeof trustee );
550 memset( &oas, 0xff,
sizeof(oas) );
551 pBuildTrusteeWithObjectsAndSidA(&trustee, &oas, &
ObjectType,
552 &InheritedObjectType, psid);
563 ok(oas.
pSid == psid,
"pSid wrong\n");
566 ok(pGetTrusteeNameA(&trustee) == (
LPSTR)&oas,
"GetTrusteeName returned wrong value\n");
569 memset( &trustee, 0xff,
sizeof trustee );
570 memset( &oas, 0xff,
sizeof(oas) );
571 pBuildTrusteeWithObjectsAndSidA(&trustee, &oas,
NULL,
572 &InheritedObjectType, psid);
583 ok(oas.
pSid == psid,
"pSid wrong\n");
588 memset( &trustee, 0xff,
sizeof trustee );
589 pBuildTrusteeWithNameA( &trustee, szTrusteeName );
593 "MultipleTrusteeOperation wrong\n");
596 ok( trustee.
ptstrName == szTrusteeName,
"ptstrName wrong\n" );
599 memset( &trustee, 0xff,
sizeof trustee );
600 memset( &oan, 0xff,
sizeof(oan) );
601 pBuildTrusteeWithObjectsAndNameA(&trustee, &oan,
SE_KERNEL_OBJECT, szObjectTypeName,
602 szInheritedObjectTypeName, szTrusteeName);
613 ok(oan.
ptstrName == szTrusteeName,
"szTrusteeName wrong\n");
616 ok(pGetTrusteeNameA(&trustee) == (
LPSTR)&oan,
"GetTrusteeName returned wrong value\n");
619 memset( &trustee, 0xff,
sizeof trustee );
620 memset( &oan, 0xff,
sizeof(oan) );
622 szInheritedObjectTypeName, szTrusteeName);
633 ok(oan.
ptstrName == szTrusteeName,
"szTrusteeName wrong\n");
636 memset( &trustee, 0xff,
sizeof trustee );
637 memset( &oan, 0xff,
sizeof(oan) );
638 pBuildTrusteeWithObjectsAndNameA(&trustee, &oan,
SE_KERNEL_OBJECT, szObjectTypeName,
639 NULL, szTrusteeName);
650 ok(oan.
ptstrName == szTrusteeName,
"szTrusteeName wrong\n");
654#ifndef SE_MIN_WELL_KNOWN_PRIVILEGE
655#define SE_MIN_WELL_KNOWN_PRIVILEGE 2L
656#define SE_CREATE_TOKEN_PRIVILEGE 2L
657#define SE_ASSIGNPRIMARYTOKEN_PRIVILEGE 3L
658#define SE_LOCK_MEMORY_PRIVILEGE 4L
659#define SE_INCREASE_QUOTA_PRIVILEGE 5L
660#define SE_MACHINE_ACCOUNT_PRIVILEGE 6L
661#define SE_TCB_PRIVILEGE 7L
662#define SE_SECURITY_PRIVILEGE 8L
663#define SE_TAKE_OWNERSHIP_PRIVILEGE 9L
664#define SE_LOAD_DRIVER_PRIVILEGE 10L
665#define SE_SYSTEM_PROFILE_PRIVILEGE 11L
666#define SE_SYSTEMTIME_PRIVILEGE 12L
667#define SE_PROF_SINGLE_PROCESS_PRIVILEGE 13L
668#define SE_INC_BASE_PRIORITY_PRIVILEGE 14L
669#define SE_CREATE_PAGEFILE_PRIVILEGE 15L
670#define SE_CREATE_PERMANENT_PRIVILEGE 16L
671#define SE_BACKUP_PRIVILEGE 17L
672#define SE_RESTORE_PRIVILEGE 18L
673#define SE_SHUTDOWN_PRIVILEGE 19L
674#define SE_DEBUG_PRIVILEGE 20L
675#define SE_AUDIT_PRIVILEGE 21L
676#define SE_SYSTEM_ENVIRONMENT_PRIVILEGE 22L
677#define SE_CHANGE_NOTIFY_PRIVILEGE 23L
678#define SE_REMOTE_SHUTDOWN_PRIVILEGE 24L
679#define SE_UNDOCK_PRIVILEGE 25L
680#define SE_SYNC_AGENT_PRIVILEGE 26L
681#define SE_ENABLE_DELEGATION_PRIVILEGE 27L
682#define SE_MANAGE_VOLUME_PRIVILEGE 28L
683#define SE_IMPERSONATE_PRIVILEGE 29L
684#define SE_CREATE_GLOBAL_PRIVILEGE 30L
685#define SE_MAX_WELL_KNOWN_PRIVILEGE SE_CREATE_GLOBAL_PRIVILEGE
695 if (!pAllocateLocallyUniqueId)
return;
697 ret = pAllocateLocallyUniqueId(&luid1);
702 "AllocateLocallyUniqueId failed: %d\n",
GetLastError());
703 ret = pAllocateLocallyUniqueId(&luid2);
705 "AllocateLocallyUniqueId failed: %d\n",
GetLastError());
707 "AllocateLocallyUniqueId returned a well-known LUID\n");
709 "AllocateLocallyUniqueId returned non-unique LUIDs\n");
710 ret = pAllocateLocallyUniqueId(
NULL);
712 "AllocateLocallyUniqueId(NULL) didn't return ERROR_NOACCESS: %d\n",
721 LUID luid = { 0, 0 };
727 if (!pLookupPrivilegeNameA)
return;
738 "LookupPrivilegeNameA didn't fail with ERROR_INSUFFICIENT_BUFFER: %d\n",
741 "LookupPrivilegeNameA returned an incorrect required length for\n"
742 "SeCreateTokenPrivilege (got %d, expected %d)\n",
cchName,
743 lstrlenA(
"SeCreateTokenPrivilege") + 1);
748 "LookupPrivilegeNameA returned an incorrect output length for\n"
749 "SeCreateTokenPrivilege (got %d, expected %d)\n",
cchName,
750 (
int)
strlen(
"SeCreateTokenPrivilege"));
758 "LookupPrivilegeNameA(0.%d) failed: %d\n",
i,
GetLastError());
765 "LookupPrivilegeNameA didn't fail with ERROR_NO_SUCH_PRIVILEGE: %d\n",
770 ret = pLookupPrivilegeNameA(
"b0gu5.Nam3", &luid,
buf, &
cchName);
773 "LookupPrivilegeNameA didn't fail with RPC_S_SERVER_UNAVAILABLE or RPC_S_INVALID_NET_ADDR: %d\n",
823 if (!pLookupPrivilegeValueA)
return;
824 ret = pLookupPrivilegeValueA(
NULL,
"SeCreateTokenPrivilege", &luid);
829 ret = pLookupPrivilegeValueA(
"b0gu5.Nam3",
"SeCreateTokenPrivilege", &luid);
832 "LookupPrivilegeValueA didn't fail with RPC_S_SERVER_UNAVAILABLE or RPC_S_INVALID_NET_ADDR: %d\n",
835 ret = pLookupPrivilegeValueA(
NULL, 0, &luid);
837 "LookupPrivilegeValueA didn't fail with ERROR_NO_SUCH_PRIVILEGE: %d\n",
840 ret = pLookupPrivilegeValueA(
NULL,
"SeBogusPrivilege", &luid);
842 "LookupPrivilegeValueA didn't fail with ERROR_NO_SUCH_PRIVILEGE: %d\n",
845 ret = pLookupPrivilegeValueA(
NULL,
"sEcREATEtOKENpRIVILEGE", &luid);
847 "LookupPrivilegeValueA(NULL, sEcREATEtOKENpRIVILEGE, &luid) failed: %d\n",
849 for (
i = 0;
i <
sizeof(privs) /
sizeof(privs[0]);
i++)
854 if (pLookupPrivilegeValueA(
NULL, privs[
i].
name, &luid))
857 "LookupPrivilegeValueA returned an invalid LUID for %s\n",
876 DWORD sdSize, retSize, rc, granted, priv_set_len;
885 if (!pGetFileSecurityA) {
886 win_skip (
"GetFileSecurity is not available\n");
890 if (!pSetFileSecurityA) {
891 win_skip (
"SetFileSecurity is not available\n");
921 win_skip(
"GetFileSecurityA is not implemented\n");
924 ok (!rc,
"GetFileSecurityA "
925 "was expected to fail for '%s'\n",
file);
927 "returned %d; expected ERROR_INSUFFICIENT_BUFFER\n",
GetLastError());
936 rc = pGetFileSecurityA (
file,
request,
sd, sdSize, &retSize);
937 ok (rc,
"GetFileSecurityA "
939 ok (retSize == sdSize ||
941 "GetFileSecurityA returned size %d; expected %d\n", retSize, sdSize);
946 ok (rc,
"SetFileSecurityA "
957 ok (!rc,
"GetFileSecurityA "
958 "was expected to fail for '%s'\n",
path);
960 "returned %d; expected ERROR_INSUFFICIENT_BUFFER\n",
GetLastError());
969 rc = pGetFileSecurityA (
path,
request,
sd, sdSize, &retSize);
970 ok (rc,
"GetFileSecurityA "
972 ok (retSize == sdSize ||
974 "GetFileSecurityA returned size %d; expected %d\n", retSize, sdSize);
979 ok (rc,
"SetFileSecurityA "
984 strcpy (wintmpdir,
"\\Should not exist");
987 ok (!rc,
"GetFileSecurityA should fail for not existing directories/files\n");
989 "last error ERROR_FILE_NOT_FOUND expected, got %d\n",
GetLastError());
1011 ok(!rc,
"GetFileSecurity should fail\n");
1013 "expected ERROR_INSUFFICIENT_BUFFER got %d\n",
GetLastError());
1017 retSize = 0xdeadbeef;
1020 sd, sdSize, &retSize);
1022 ok(retSize == sdSize ||
broken(retSize == 0) ,
"expected %d, got %d\n", sdSize, retSize);
1026 ok(!rc,
"OpenThreadToken should fail\n");
1041 priv_set_len =
sizeof(priv_set);
1042 granted = 0xdeadbeef;
1048 ok(granted ==
FILE_READ_DATA,
"expected FILE_READ_DATA, got %#x\n", granted);
1050 granted = 0xdeadbeef;
1058 granted = 0xdeadbeef;
1064 ok(granted ==
FILE_EXECUTE,
"expected FILE_EXECUTE, got %#x\n", granted);
1066 granted = 0xdeadbeef;
1072 ok(granted ==
DELETE,
"expected DELETE, got %#x\n", granted);
1074 granted = 0xdeadbeef;
1082 granted = 0xdeadbeef;
1088 ok(granted == 0x1ff,
"expected 0x1ff, got %#x\n", granted);
1090 granted = 0xdeadbeef;
1100 ok(!rc,
"AccessCheck should fail\n");
1107 retSize = 0xdeadbeef;
1110 ok(!rc,
"WriteFile should fail\n");
1112 ok(retSize == 0,
"expected 0, got %d\n", retSize);
1119 "expected FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_READONLY got %#x\n", rc);
1131 retSize = 0xdeadbeef;
1134 ok(!rc,
"WriteFile should fail\n");
1136 ok(retSize == 0,
"expected 0, got %d\n", retSize);
1142 "expected FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_READONLY got %#x\n", rc);
1144 retSize = 0xdeadbeef;
1147 sd, sdSize, &retSize);
1149 ok(retSize == sdSize ||
broken(retSize == 0) ,
"expected %d, got %d\n", sdSize, retSize);
1151 priv_set_len =
sizeof(priv_set);
1152 granted = 0xdeadbeef;
1158 ok(granted ==
FILE_READ_DATA,
"expected FILE_READ_DATA, got %#x\n", granted);
1160 granted = 0xdeadbeef;
1169 granted = 0xdeadbeef;
1175 ok(granted ==
FILE_EXECUTE,
"expected FILE_EXECUTE, got %#x\n", granted);
1177 granted = 0xdeadbeef;
1184 ok(granted ==
DELETE,
"expected DELETE, got %#x\n", granted);
1186 granted = 0xdeadbeef;
1195 granted = 0xdeadbeef;
1202 ok(granted == 0x1ff,
"expected 0x1ff, got %#x\n", granted);
1204 granted = 0xdeadbeef;
1215 ok(!rc,
"DeleteFile should fail\n");
1252 skip(
"not running on NT, skipping test\n");
1255 pRtlAdjustPrivilege = (
void *)
GetProcAddress(NtDllModule,
"RtlAdjustPrivilege");
1256 if (!pRtlAdjustPrivilege)
1258 win_skip(
"missing RtlAdjustPrivilege, skipping test\n");
1266 skip(
"ACLs not implemented - skipping tests\n");
1272 res =
AllocateAndInitializeSid( &SIDAuthWorld, 1,
SECURITY_WORLD_RID, 0, 0, 0, 0, 0, 0, 0, &EveryoneSid);
1310 "failed with ERROR_INVALID_SECURITY_DESCR, instead of %d\n",
err);
1312 "Access and/or AccessStatus were changed!\n");
1327 "with ERROR_GENERIC_NOT_MAPPED, instead of %d\n",
err);
1329 "Access and/or AccessStatus were changed!\n");
1338 "with ERROR_NOACCESS, instead of %d\n",
err);
1340 "Access and/or AccessStatus were changed!\n");
1349 "with ERROR_NOACCESS, instead of %d\n",
err);
1351 "Access and/or AccessStatus were changed!\n");
1360 "with ERROR_NOACCESS, instead of %d\n",
err);
1362 "Access and/or AccessStatus were changed!\n");
1372 "AccessCheck failed to grant access with error %d\n",
1382 "with ERROR_NOACCESS, instead of %d\n",
err);
1384 "Access and/or AccessStatus were changed!\n");
1390 Access = ntAccessStatus = 0x1abe11ed;
1392 NULL, &PrivSetLen, &Access, &ntAccessStatus);
1395 "NtAccessCheck should have failed with STATUS_ACCESS_VIOLATION, got %x\n", ntret);
1396 ok(
err == 0xdeadbeef,
1397 "NtAccessCheck shouldn't set last error, got %d\n",
err);
1398 ok(Access == 0x1abe11ed && ntAccessStatus == 0x1abe11ed,
1399 "Access and/or AccessStatus were changed!\n");
1403 Access = ntAccessStatus = 0x1abe11ed;
1405 PrivSet,
NULL, &Access, &ntAccessStatus);
1408 "NtAccessCheck should have failed with STATUS_ACCESS_VIOLATION, got %x\n", ntret);
1409 ok(
err == 0xdeadbeef,
1410 "NtAccessCheck shouldn't set last error, got %d\n",
err);
1411 ok(Access == 0x1abe11ed && ntAccessStatus == 0x1abe11ed,
1412 "Access and/or AccessStatus were changed!\n");
1416 Access = ntAccessStatus = 0x1abe11ed;
1418 NULL,
NULL, &Access, &ntAccessStatus);
1421 "NtAccessCheck should have failed with STATUS_ACCESS_VIOLATION, got %x\n", ntret);
1422 ok(
err == 0xdeadbeef,
1423 "NtAccessCheck shouldn't set last error, got %d\n",
err);
1424 ok(Access == 0x1abe11ed && ntAccessStatus == 0x1abe11ed,
1425 "Access and/or AccessStatus were changed!\n");
1428 win_skip(
"NtAccessCheck unavailable. Skipping.\n");
1438 "AccessCheck failed to grant access with error %d\n",
1444 "AccessCheck failed to grant access with error %d\n",
1455 "with ERROR_ACCESS_DENIED, instead of %d\n",
err);
1456 ok(!Access,
"Should have failed to grant any access, got 0x%08x\n", Access);
1470 "AccessCheck failed to grant access with error %d\n",
1477 "AccessCheck failed to grant any access with error %d\n",
1479 trace(
"AccessCheck with MAXIMUM_ALLOWED got Access 0x%08x\n", Access);
1488 "failed with ERROR_NOACCESS, instead of %d\n",
err);
1490 "Access and/or AccessStatus were changed!\n");
1500 "failed with ERROR_INSUFFICIENT_BUFFER, instead of %d\n",
err);
1501 ok(PrivSetLen ==
sizeof(
PRIVILEGE_SET),
"PrivSetLen returns %d\n", PrivSetLen);
1503 "Access and/or AccessStatus were changed!\n");
1513 "failed with ERROR_NOACCESS, instead of %d\n",
err);
1514 ok(PrivSetLen == 1,
"PrivSetLen returns %d\n", PrivSetLen);
1516 "Access and/or AccessStatus were changed!\n");
1526 "failed with ERROR_NOACCESS, instead of %d\n",
err);
1527 ok(PrivSetLen ==
sizeof(
PRIVILEGE_SET) - 1,
"PrivSetLen returns %d\n", PrivSetLen);
1529 "Access and/or AccessStatus were changed!\n");
1539 "failed with ERROR_NOACCESS, instead of %d\n",
err);
1540 ok(PrivSetLen ==
sizeof(
PRIVILEGE_SET),
"PrivSetLen returns %d\n", PrivSetLen);
1542 "Access and/or AccessStatus were changed!\n");
1552 "failed with ERROR_INSUFFICIENT_BUFFER, instead of %d\n",
err);
1553 ok(PrivSetLen ==
sizeof(
PRIVILEGE_SET),
"PrivSetLen returns %d\n", PrivSetLen);
1555 "Access and/or AccessStatus were changed!\n");
1566 "failed with ERROR_INSUFFICIENT_BUFFER, instead of %d\n",
err);
1568 ok(PrivSetLen ==
sizeof(
PRIVILEGE_SET),
"PrivSetLen returns %d\n", PrivSetLen);
1570 "Access and/or AccessStatus were changed!\n");
1581 "failed with ERROR_INSUFFICIENT_BUFFER, instead of %d\n",
err);
1583 ok(PrivSetLen ==
sizeof(
PRIVILEGE_SET),
"PrivSetLen returns %d\n", PrivSetLen);
1586 "Access and/or AccessStatus were changed!\n");
1592 memset(PrivSet, 0xcc, PrivSetLen);
1598 ok(PrivSetLen ==
sizeof(
PRIVILEGE_SET),
"PrivSetLen returns %d\n", PrivSetLen);
1600 "AccessCheck failed to grant access with error %d\n",
GetLastError());
1608 memset(PrivSet, 0xcc, PrivSetLen);
1614 ok(PrivSetLen ==
sizeof(
PRIVILEGE_SET) + 1,
"PrivSetLen returns %d\n", PrivSetLen);
1616 "AccessCheck failed to grant access with error %d\n",
GetLastError());
1629 "failed with ERROR_NOACCESS, instead of %d\n",
err);
1631 "Access and/or AccessStatus were changed!\n");
1641 "with ERROR_ACCESS_DENIED, instead of %d\n",
err);
1642 ok(!Access,
"Should have failed to grant any access, got 0x%08x\n", Access);
1649 "AccessCheck should have failed with ERROR_PRIVILEGE_NOT_HELD, instead of %d\n",
1665 "failed with ERROR_INSUFFICIENT_BUFFER, instead of %d\n",
err);
1666 ok(PrivSetLen ==
sizeof(
PRIVILEGE_SET),
"PrivSetLen returns %d\n", PrivSetLen);
1668 "Access and/or AccessStatus were changed!\n");
1679 "failed with ERROR_INSUFFICIENT_BUFFER, instead of %d\n",
err);
1681 ok(PrivSetLen ==
sizeof(
PRIVILEGE_SET),
"PrivSetLen returns %d\n", PrivSetLen);
1684 "Access and/or AccessStatus were changed!\n");
1690 memset(PrivSet, 0xcc, PrivSetLen);
1694 "AccessCheck should have succeeded, error %d\n",
1697 "Access should be equal to ACCESS_SYSTEM_SECURITY instead of 0x%08x\n",
1706 memset(PrivSet, 0xcc, PrivSetLen);
1710 "AccessCheck should have succeeded, error %d\n",
1713 "Access should be equal to ACCESS_SYSTEM_SECURITY instead of 0x%08x\n",
1719 trace(
"Couldn't get SE_SECURITY_PRIVILEGE (0x%08x), skipping ACCESS_SYSTEM_SECURITY test\n",
1731 if (pAddAccessAllowedAceEx)
1737 win_skip(
"AddAccessAllowedAceEx is not available\n");
1744 "with ERROR_ACCESS_DENIED, instead of %d\n",
err);
1745 ok(!Access,
"Should have failed to grant any access, got 0x%08x\n", Access);
1757 "with ERROR_BAD_IMPERSONATION_LEVEL, instead of %d\n",
err);
1766 "with ERROR_NO_IMPERSONATION_TOKEN, instead of %d\n",
err);
1801 win_skip(
"OpenProcessToken is not implemented\n");
1814 ok(!
ret && (
GLE ==
ERROR_INVALID_PARAMETER),
"GetTokenInformation(TokenImpersonationLevel) on primary token should have failed with ERROR_INVALID_PARAMETER instead of %d\n",
GLE);
1827 ok(Size2 > 1,
"got %d\n", Size2);
1832 memset(Groups, 0xcc, Size2);
1839 ok(*((
BYTE*)Groups) == 0xcc,
"buffer altered\n");
1846 "GetTokenInformation(TokenGroups) %s with error %d\n",
1851 ok(
ret,
"GetTokenInformation(TokenGroups) failed with error %d\n",
GetLastError());
1853 "GetTokenInformation shouldn't have set last error to %d\n",
1855 trace(
"TokenGroups:\n");
1858 DWORD NameLength = 255;
1860 DWORD DomainLength = 255;
1879 "GetTokenInformation(TokenUser) failed with error %d\n",
GetLastError());
1883 "GetTokenInformation(TokenUser) failed with error %d\n",
GetLastError());
1897 "GetTokenInformation(TokenLogonSid) failed with error %d\n",
GetLastError());
1901 "GetTokenInformation(TokenLogonSid) failed with error %d\n",
GetLastError());
1908 trace(
"TokenLogon: %s\n", SidString);
1913 ok(
ret,
"Unknown SID\n");
1923 "GetTokenInformation(TokenPrivileges) failed with error %d\n",
GetLastError());
1927 "GetTokenInformation(TokenPrivileges) failed with error %d\n",
GetLastError());
1928 trace(
"TokenPrivileges:\n");
1943 ok(
ret,
"GetTokenInformation(TokenImpersonationLevel) failed with error %d\n",
GetLastError());
1951 "GetTokenInformation(TokenDefaultDacl) failed with error %u\n",
GetLastError());
1955 ok(
ret,
"GetTokenInformation(TokenDefaultDacl) failed with error %u\n",
GetLastError());
1960 ok(!
ret,
"SetTokenInformation(TokenDefaultDacl) succeeded\n");
1966 ok(!
ret,
"SetTokenInformation(TokenDefaultDacl) succeeded\n");
1969 acl =
Dacl->DefaultDacl;
1973 ok(
ret,
"SetTokenInformation(TokenDefaultDacl) succeeded\n");
1976 Dacl->DefaultDacl = (
ACL *)0xdeadbeef;
1978 ok(
ret,
"GetTokenInformation(TokenDefaultDacl) failed with error %u\n",
GetLastError());
1979 ok(
Dacl->DefaultDacl ==
NULL,
"expected NULL, got %p\n",
Dacl->DefaultDacl);
1981 "got %u expected sizeof(TOKEN_DEFAULT_DACL)\n", Size2);
1983 Dacl->DefaultDacl = acl;
1985 ok(
ret,
"SetTokenInformation(TokenDefaultDacl) failed with error %u\n",
GetLastError());
1989 ok(
ret,
"GetTokenInformation(TokenDefaultDacl) failed with error %u\n",
GetLastError());
1991 win_skip(
"TOKEN_DEFAULT_DACL size too small on WoW64\n");
2007 is_app_container = 0xdeadbeef;
2009 sizeof(is_app_container), &
size);
2014 ok(
size ==
sizeof(is_app_container),
"size = %u\n",
size);
2015 ok(!is_app_container,
"is_app_container = %x\n", is_app_container);
2040 "LookupAccountSid(%s) failed: %d\n", str_sid,
GetLastError());
2044 trace(
" %s couldn't be mapped\n", str_sid);
2054 {
TRUE,
"S-1-0-0"}, {
TRUE,
"S-1-1-0"}, {
TRUE,
"S-1-2-0"}, {
TRUE,
"S-1-3-0"},
2057 {
TRUE,
"S-1-5-6"}, {
TRUE,
"S-1-5-7"}, {
TRUE,
"S-1-5-8"}, {
TRUE,
"S-1-5-9"},
2058 {
TRUE,
"S-1-5-10"}, {
TRUE,
"S-1-5-11"}, {
TRUE,
"S-1-5-12"}, {
TRUE,
"S-1-5-13"},
2060 {
TRUE,
"S-1-5-20"}, {
TRUE,
"S-1-5-32"},
2061 {
FALSE,
"S-1-5-32-544"}, {
TRUE,
"S-1-5-32-545"}, {
TRUE,
"S-1-5-32-546"},
2062 {
TRUE,
"S-1-5-32-547"}, {
TRUE,
"S-1-5-32-548"}, {
TRUE,
"S-1-5-32-549"},
2063 {
TRUE,
"S-1-5-32-550"}, {
TRUE,
"S-1-5-32-551"}, {
TRUE,
"S-1-5-32-552"},
2064 {
TRUE,
"S-1-5-32-554"}, {
TRUE,
"S-1-5-32-555"}, {
TRUE,
"S-1-5-32-556"},
2065 {
FALSE,
"S-1-5-21-12-23-34-45-56-500"}, {
FALSE,
"S-1-5-21-12-23-34-45-56-501"},
2066 {
FALSE,
"S-1-5-21-12-23-34-45-56-502"}, {
FALSE,
"S-1-5-21-12-23-34-45-56-512"},
2067 {
FALSE,
"S-1-5-21-12-23-34-45-56-513"}, {
FALSE,
"S-1-5-21-12-23-34-45-56-514"},
2068 {
FALSE,
"S-1-5-21-12-23-34-45-56-515"}, {
FALSE,
"S-1-5-21-12-23-34-45-56-516"},
2069 {
FALSE,
"S-1-5-21-12-23-34-45-56-517"}, {
FALSE,
"S-1-5-21-12-23-34-45-56-518"},
2070 {
FALSE,
"S-1-5-21-12-23-34-45-56-519"}, {
FALSE,
"S-1-5-21-12-23-34-45-56-520"},
2071 {
FALSE,
"S-1-5-21-12-23-34-45-56-553"},
2073 {
TRUE,
"S-1-5-64-10"}, {
TRUE,
"S-1-5-64-21"}, {
TRUE,
"S-1-5-64-14"},
2074 {
TRUE,
"S-1-5-15"}, {
TRUE,
"S-1-5-1000"}, {
FALSE,
"S-1-5-32-557"},
2075 {
TRUE,
"S-1-5-32-558"}, {
TRUE,
"S-1-5-32-559"}, {
TRUE,
"S-1-5-32-560"},
2076 {
TRUE,
"S-1-5-32-561"}, {
TRUE,
"S-1-5-32-562"},
2078 {
TRUE,
"S-1-5-32-568"},
2079 {
TRUE,
"S-1-5-17"}, {
FALSE,
"S-1-5-32-569"}, {
TRUE,
"S-1-16-0"},
2080 {
TRUE,
"S-1-16-4096"}, {
TRUE,
"S-1-16-8192"}, {
TRUE,
"S-1-16-12288"},
2081 {
TRUE,
"S-1-16-16384"}, {
TRUE,
"S-1-5-33"}, {
TRUE,
"S-1-3-4"},
2082 {
FALSE,
"S-1-5-21-12-23-34-45-56-571"}, {
FALSE,
"S-1-5-21-12-23-34-45-56-572"},
2083 {
TRUE,
"S-1-5-22"}, {
FALSE,
"S-1-5-21-12-23-34-45-56-521"}, {
TRUE,
"S-1-5-32-573"},
2084 {
FALSE,
"S-1-5-21-12-23-34-45-56-498"}, {
TRUE,
"S-1-5-32-574"}, {
TRUE,
"S-1-16-8448"},
2086 {
TRUE,
"S-1-15-2-1"},
2097 if (!pCreateWellKnownSid)
2099 win_skip(
"CreateWellKnownSid not available\n");
2107 ok(!
ret,
"CreateWellKnownSid succeeded\n");
2109 ok(
size,
"expected size > 0\n");
2114 ok(!
ret,
"CreateWellKnownSid succeeded\n");
2123 AllocateAndInitializeSid(&
ident, 6,
SECURITY_NT_NON_UNIQUE, 12, 23, 34, 45, 56, 0, 0, &domainsid);
2136 cb =
sizeof(sid_buffer);
2137 if (!pCreateWellKnownSid(
i,
NULL, sid_buffer, &
cb))
2139 skip(
"Well known SID %u not implemented\n",
i);
2143 cb =
sizeof(sid_buffer);
2144 ok(pCreateWellKnownSid(
i,
value->without_domain ?
NULL : domainsid, sid_buffer, &
cb),
"Couldn't create well known sid %u\n",
i);
2148 ok(
strcmp(
str,
value->sid_string) == 0,
"%d: SID mismatch - expected %s, got %s\n",
i,
2152 if (
value->without_domain)
2156 ok(pCreateWellKnownSid(
i, domainsid, buf2, &
cb),
"Couldn't create well known sid %u with optional domain\n",
i);
2158 ok(
memcmp(buf2, sid_buffer,
cb) == 0,
"SID create with domain is different than without (%u)\n",
i);
2169 DWORD acc_sizeA, dom_sizeA, user_sizeA;
2170 DWORD real_acc_sizeA, real_dom_sizeA;
2172 DWORD acc_sizeW, dom_sizeW;
2173 DWORD real_acc_sizeW, real_dom_sizeW;
2189 "AllocateAndInitializeSid failed with error %d\n",
GetLastError());
2198 ok(
ret,
"LookupAccountSidA() Expected TRUE, got FALSE\n");
2204 ok(
ret,
"LookupAccountSidA() Expected TRUE, got FALSE\n");
2210 ok(
ret,
"LookupAccountSidA() Expected TRUE, got FALSE\n");
2217 ok(!
ret,
"LookupAccountSidA() Expected FALSE got TRUE\n");
2219 "LookupAccountSidA() Expected ERROR_NOT_ENOUGH_MEMORY, got %u\n",
GetLastError());
2227 ok(acc_sizeA == real_acc_sizeA + 1,
2228 "LookupAccountSidA() Expected acc_size = %u, got %u\n",
2229 real_acc_sizeA + 1, acc_sizeA);
2236 ok(acc_sizeA == real_acc_sizeA + 1,
2237 "LookupAccountSid() Expected acc_size = %u, got %u\n",
2238 real_acc_sizeA + 1, acc_sizeA);
2245 ok(!
ret,
"LookupAccountSidA() Expected FALSE got TRUE\n");
2247 "LookupAccountSidA() Expected ERROR_NOT_ENOUGH_MEMORY, got %u\n",
GetLastError());
2255 ok(dom_sizeA == real_dom_sizeA + 1,
2256 "LookupAccountSidA() Expected dom_size = %u, got %u\n",
2257 real_dom_sizeA + 1, dom_sizeA);
2264 ok(dom_sizeA == real_dom_sizeA + 1,
2265 "LookupAccountSidA() Expected dom_size = %u, got %u\n",
2266 real_dom_sizeA + 1, dom_sizeA);
2271 ok(
ret,
"LookupAccountSidW() Expected TRUE, got FALSE\n");
2276 ret =
LookupAccountSidA(
"deepthought", pUsersSid, accountA, &real_acc_sizeA, domainA, &real_dom_sizeA, &use);
2277 ok(!
ret,
"LookupAccountSidA() Expected FALSE got TRUE\n");
2279 "LookupAccountSidA() Expected RPC_S_SERVER_UNAVAILABLE or RPC_S_INVALID_NET_ADDR, got %u\n",
GetLastError());
2288 ok(!
ret,
"LookupAccountSidW() Expected FALSE got TRUE\n");
2290 "LookupAccountSidW() Expected ERROR_NOT_ENOUGH_MEMORY, got %u\n",
GetLastError());
2298 ok(acc_sizeW == real_acc_sizeW + 1,
2299 "LookupAccountSidW() Expected acc_size = %u, got %u\n",
2300 real_acc_sizeW + 1, acc_sizeW);
2307 ok(acc_sizeW == real_acc_sizeW + 1,
2308 "LookupAccountSidW() Expected acc_size = %u, got %u\n",
2309 real_acc_sizeW + 1, acc_sizeW);
2316 ok(!
ret,
"LookupAccountSidW() Expected FALSE got TRUE\n");
2318 "LookupAccountSidW() Expected ERROR_NOT_ENOUGH_MEMORY, got %u\n",
GetLastError());
2326 ok(dom_sizeW == real_dom_sizeW + 1,
2327 "LookupAccountSidW() Expected dom_size = %u, got %u\n",
2328 real_dom_sizeW + 1, dom_sizeW);
2335 ok(dom_sizeW == real_dom_sizeW + 1,
2336 "LookupAccountSidW() Expected dom_size = %u, got %u\n",
2337 real_dom_sizeW + 1, dom_sizeW);
2339 acc_sizeW = dom_sizeW = use = 0;
2345 ok(acc_sizeW,
"expected non-zero account size\n");
2346 ok(dom_sizeW,
"expected non-zero domain size\n");
2347 ok(!use,
"expected zero use %u\n", use);
2362 ok(
ret,
"LookupAccountSidA() Expected TRUE, got FALSE\n");
2365 ok(
ret,
"GetUserNameA() Expected TRUE, got FALSE\n");
2366 ok(
lstrcmpA(usernameA, accountA) == 0,
"LookupAccountSidA() Expected account name: %s got: %s\n", usernameA, accountA );
2370 if (pCreateWellKnownSid)
2372 trace(
"Well Known SIDs:\n");
2373 for (
i = 0;
i <= 84;
i++)
2383 trace(
" %d: %s %s\\%s %d\n",
i, str_sidA, domainA, accountA, use);
2392 trace(
" %d: not supported\n",
i);
2396 pLsaQueryInformationPolicy = (
void *)
GetProcAddress(
hmod,
"LsaQueryInformationPolicy");
2401 if (pLsaQueryInformationPolicy && pLsaOpenPolicy && pLsaFreeMemory && pLsaClose)
2407 ZeroMemory(&object_attributes,
sizeof(object_attributes));
2408 object_attributes.
Length =
sizeof(object_attributes);
2412 "LsaOpenPolicy(POLICY_ALL_ACCESS) returned 0x%08x\n",
status);
2416 trace(
"LsaOpenPolicy(POLICY_ALL_ACCESS) failed, trying POLICY_VIEW_LOCAL_INFORMATION\n");
2428 ok(
info->DomainSid!=0,
"LsaQueryInformationPolicy(PolicyAccountDomainInformation) missing SID\n");
2429 if (
info->DomainSid)
2497 DWORD sid_size, domain_size;
2506 ok(!
ret,
" %s Should have failed to lookup account name\n",
name);
2513 ok(!
ret,
" %s Should have failed to lookup account name\n",
name);
2517 AllocateAndInitializeSid(&
ident, 6,
SECURITY_NT_NON_UNIQUE, 12, 23, 34, 45, 56, 0, 0, &domainsid);
2518 cb =
sizeof(wk_sid);
2519 if (!pCreateWellKnownSid(
result, domainsid, wk_sid, &
cb))
2528 win_skip(
"CreateWellKnownSid() succeeded but the account '%s' is not present (W2K)\n",
name);
2534 ok(
ret,
"Failed to lookup account name %s\n",
name);
2535 ok(sid_size != 0,
"sid_size was zero\n");
2537 ok(
EqualSid(psid,wk_sid),
"%s Sid %s fails to match well known sid %s!\n",
2552 DWORD sid_size, domain_size, user_size;
2553 DWORD sid_save, domain_save;
2568 user_size =
UNLEN + 1;
2576 sid_use = 0xcafebabe;
2581 win_skip(
"LookupAccountNameA is not implemented\n");
2584 ok(!
ret,
"Expected 0, got %d\n",
ret);
2586 "Expected ERROR_INSUFFICIENT_BUFFER, got %d\n",
GetLastError());
2587 ok(sid_size != 0,
"Expected non-zero sid size\n");
2588 ok(domain_size != 0,
"Expected non-zero domain size\n");
2589 ok(sid_use == (
SID_NAME_USE)0xcafebabe,
"Expected 0xcafebabe, got %d\n", sid_use);
2591 sid_save = sid_size;
2592 domain_save = domain_size;
2600 ok(
ret,
"Failed to lookup account name\n");
2604 ok(domain_size == domain_save - 1,
"Expected %d, got %d\n", domain_save - 1, domain_size);
2607 domain_size = domain_save;
2608 sid_size = sid_save;
2612 skip(
"Non-English locale (test with hardcoded 'Everyone')\n");
2618 ok(
ret,
"Failed to lookup account name\n");
2619 ok(sid_size != 0,
"sid_size was zero\n");
2622 ok(domain_size == 0,
"Expected 0, got %d\n", domain_size);
2625 domain_size = domain_save;
2632 ok(!
ret,
"Expected 0, got %d\n",
ret);
2634 "Expected ERROR_INSUFFICIENT_BUFFER, got %d\n",
GetLastError());
2635 ok(sid_size == sid_save,
"Expected %d, got %d\n", sid_save, sid_size);
2636 ok(domain_size == domain_save,
"Expected %d, got %d\n", domain_save, domain_size);
2642 ok(!
ret,
"Expected 0, got %d\n",
ret);
2644 "Expected ERROR_INSUFFICIENT_BUFFER, got %d\n",
GetLastError());
2645 ok(sid_size == sid_save,
"Expected %d, got %d\n", sid_save, sid_size);
2646 ok(domain_size == domain_save,
"Expected %d, got %d\n", domain_save, domain_size);
2652 ok(!
ret,
"Expected 0, got %d\n",
ret);
2654 "Expected ERROR_INSUFFICIENT_BUFFER, got %d\n",
GetLastError());
2655 ok(sid_size == sid_save,
"Expected %d, got %d\n", sid_save, sid_size);
2656 ok(domain_size == domain_save,
"Expected %d, got %d\n", domain_save, domain_size);
2664 sid_use = 0xcafebabe;
2668 win_skip(
"NULL account name doesn't work on NT4\n");
2671 ok(!
ret,
"Expected 0, got %d\n",
ret);
2673 "Expected ERROR_INSUFFICIENT_BUFFER, got %d\n",
GetLastError());
2674 ok(sid_size != 0,
"Expected non-zero sid size\n");
2675 ok(domain_size != 0,
"Expected non-zero domain size\n");
2676 ok(sid_use == (
SID_NAME_USE)0xcafebabe,
"Expected 0xcafebabe, got %d\n", sid_use);
2684 ok(
ret,
"Failed to lookup account name\n");
2687 "Got %s for account and %s for domain, these should be the same\n",
account,
domain);
2699 ok(!
ret,
"Expected 0, got %d\n",
ret);
2702 "Expected ERROR_NONE_MAPPED, got %d\n",
GetLastError());
2703 ok(sid_size == 0,
"Expected 0, got %d\n", sid_size);
2704 ok(domain_size == 0,
"Expected 0, got %d\n", domain_size);
2711 ok(!
ret,
"Expected 0, got %d\n",
ret);
2713 "Expected RPC_S_SERVER_UNAVAILABLE or RPC_S_INVALID_NET_ADDR, got %d\n",
GetLastError());
2714 ok(sid_size == 0,
"Expected 0, got %d\n", sid_size);
2715 ok(domain_size == 0,
"Expected 0, got %d\n", domain_size);
2741 if (!pCreateWellKnownSid)
2743 win_skip(
"CreateWellKnownSid not available\n");
2749 skip(
"Non-English locale (skipping well known name creation tests)\n");
2786 DWORD size, size_dacl, size_sacl, size_owner, size_group;
2787 BOOL isDefault, isPresent,
ret;
2795 win_skip(
"InitializeSecurityDescriptor is not implemented\n");
2808 ok(
size > 5,
"Size not increased\n");
2828 ret = pConvertStringSecurityDescriptorToSecurityDescriptorA(
2829 "O:SYG:S-1-5-21-93476-23408-4576D:(A;NP;GAGXGWGR;;;SU)(A;IOID;CCDC;;;SU)"
2830 "(D;OICI;0xffffffff;;;S-1-5-21-93476-23408-4576)S:(AU;OICINPIOIDSAFA;CCDCLCSWRPRC;;;SU)"
2839 size = size_dacl = size_sacl = size_owner = size_group = 0;
2840 ret =
MakeAbsoluteSD(sd_rel,
NULL, &
size,
NULL, &size_dacl,
NULL, &size_sacl,
NULL, &size_owner,
NULL,
2846 sacl = (
PACL)((
char *)
dacl + size_dacl);
2847 owner = (
PSID)((
char *)sacl + size_sacl);
2848 group = (
PSID)((
char *)owner + size_owner);
2850 group, &size_group);
2869#define TEST_GRANTED_ACCESS(a,b) test_granted_access(a,b,0,__LINE__)
2870#define TEST_GRANTED_ACCESS2(a,b,c) test_granted_access(a,b,c,__LINE__)
2877 if (!pNtQueryObject)
2879 skip_(__FILE__,
line)(
"Not NT platform - skipping tests\n");
2884 sizeof(obj_info),
NULL );
2888 obj_info.
GrantedAccess == alt,
"Granted access should be 0x%08x "
2895#define CHECK_SET_SECURITY(o,i,e) \
2899 SetLastError( 0xdeadbeef ); \
2900 res_ = SetKernelObjectSecurity( o, i, SecurityDescriptor ); \
2901 err = GetLastError(); \
2902 if (e == ERROR_SUCCESS) \
2903 ok(res_, "SetKernelObjectSecurity failed with %d\n", err); \
2905 ok(!res_ && err == e, "SetKernelObjectSecurity should have failed " \
2906 "with %s, instead of %d\n", #e, err); \
2932 win_skip(
"ACLs not implemented - skipping tests\n");
2938 res =
AllocateAndInitializeSid( &SIDAuthWorld, 1,
SECURITY_WORLD_RID, 0, 0, 0, 0, 0, 0, 0, &EveryoneSid);
2951 ok(!
res,
"Expected failure, got %d\n",
res);
2953 "Expected ERROR_INSUFFICIENT_BUFFER, got %d\n",
GetLastError());
2962 ok(!
res,
"Expected failure, got %d\n",
res);
2964 "Expected ERROR_INSUFFICIENT_BUFFER, got %d\n",
GetLastError());
2969 UsersSid =
group->PrimaryGroup;
2973 dom_size =
sizeof(
domain);
2975 ok(
ret,
"LookupAccountSid failed with %d\n",
ret);
2980 ok(!
res,
"Expected failure, got %d\n",
res);
2982 "Expected ERROR_INSUFFICIENT_BUFFER, got %d\n",
GetLastError());
2987 UserSid =
user->User.Sid;
2989 ok(
EqualPrefixSid(UsersSid, UserSid),
"TokenPrimaryGroup Sid and TokenUser Sid don't match.\n");
3061 psa.nLength =
sizeof(
psa);
3132 "with STATUS_ACCESS_DENIED, instead of err:%d\n",
err);
3138 ok(
handle ==
NULL,
"OpenProcess(PROCESS_VM_READ) should have failed\n");
3140 ok(
handle ==
NULL,
"OpenProcess(PROCESS_ALL_ACCESS) should have failed\n");
3171 ok(
handle ==
NULL,
"OpenThread(THREAD_SET_THREAD_TOKEN) should have failed\n");
3187 if( !pDuplicateTokenEx ) {
3188 win_skip(
"DuplicateTokenEx is not available\n");
3195 win_skip(
"ImpersonateSelf is not implemented\n");
3198 ok(
ret,
"ImpersonateSelf(SecurityAnonymous) failed with error %d\n",
GetLastError());
3200 ok(!
ret,
"OpenThreadToken should have failed\n");
3207 "RegOpenKeyEx failed with %d\n",
error);
3214 ret = pDuplicateTokenEx(ProcessToken,
3222 "Duplicating a token and increasing the impersonation level should have failed with ERROR_BAD_IMPERSONATION_LEVEL instead of %d\n",
error);
3229 ok(
ret,
"GetTokenInformation(TokenUser) failed with error %d\n",
GetLastError());
3238 ok(
ret,
"GetTokenInformation(TokenPrivileges) failed with error %d\n",
GetLastError());
3253 ok(
ret,
"ImpersonateSelf(SecurityIdentification) failed with error %d\n",
GetLastError());
3261 "RegOpenKeyEx should have failed with ERROR_INVALID_HANDLE or ERROR_BAD_IMPERSONATION_LEVEL instead of %d\n",
error);
3264 ok(
ret,
"PrivilegeCheck for SecurityIdentification failed with error %d\n",
GetLastError());
3269 ok(
ret,
"ImpersonateSelf(SecurityImpersonation) failed with error %d\n",
GetLastError());
3276 ok(
ret,
"PrivilegeCheck for SecurityImpersonation failed with error %d\n",
GetLastError());
3293 static const WCHAR wszEveryone[] = {
'E',
'v',
'e',
'r',
'y',
'o',
'n',
'e',0};
3294 static const WCHAR wszCurrentUser[] = {
'C',
'U',
'R',
'R',
'E',
'N',
'T',
'_',
'U',
'S',
'E',
'R',
'\0'};
3296 if (!pSetEntriesInAclW)
3298 win_skip(
"SetEntriesInAclW is not available\n");
3302 NewAcl = (
PACL)0xdeadbeef;
3306 win_skip(
"SetEntriesInAclW is not implemented\n");
3312 "NewAcl=%p, expected NULL\n", NewAcl);
3319 win_skip(
"ACLs not implemented - skipping tests\n");
3325 res =
AllocateAndInitializeSid( &SIDAuthWorld, 1,
SECURITY_WORLD_RID, 0, 0, 0, 0, 0, 0, 0, &EveryoneSid);
3343 res = pSetEntriesInAclW(1, &ExplicitAccess, OldAcl, &NewAcl);
3345 ok(NewAcl !=
NULL,
"returned acl was NULL\n");
3351 res = pSetEntriesInAclW(1, &ExplicitAccess, OldAcl, &NewAcl);
3353 ok(NewAcl !=
NULL,
"returned acl was NULL\n");
3358 skip(
"Non-English locale (test with hardcoded 'Everyone')\n");
3364 res = pSetEntriesInAclW(1, &ExplicitAccess, OldAcl, &NewAcl);
3366 ok(NewAcl !=
NULL,
"returned acl was NULL\n");
3370 res = pSetEntriesInAclW(1, &ExplicitAccess, OldAcl, &NewAcl);
3373 "SetEntriesInAclW failed: %u\n",
res);
3376 "returned acl wasn't NULL: %p\n", NewAcl);
3380 res = pSetEntriesInAclW(1, &ExplicitAccess, OldAcl, &NewAcl);
3383 "SetEntriesInAclW failed: %u\n",
res);
3386 "returned acl wasn't NULL: %p\n", NewAcl);
3390 res = pSetEntriesInAclW(1, &ExplicitAccess, OldAcl, &NewAcl);
3392 ok(NewAcl !=
NULL,
"returned acl was NULL\n");
3398 res = pSetEntriesInAclW(1, &ExplicitAccess, OldAcl, &NewAcl);
3400 ok(NewAcl !=
NULL,
"returned acl was NULL\n");
3406 res = pSetEntriesInAclW(1, &ExplicitAccess, OldAcl, &NewAcl);
3408 ok(NewAcl !=
NULL,
"returned acl was NULL\n");
3424 static const CHAR szEveryone[] = {
'E',
'v',
'e',
'r',
'y',
'o',
'n',
'e',0};
3425 static const CHAR szCurrentUser[] = {
'C',
'U',
'R',
'R',
'E',
'N',
'T',
'_',
'U',
'S',
'E',
'R',
'\0'};
3427 if (!pSetEntriesInAclA)
3429 win_skip(
"SetEntriesInAclA is not available\n");
3433 NewAcl = (
PACL)0xdeadbeef;
3437 win_skip(
"SetEntriesInAclA is not implemented\n");
3443 "NewAcl=%p, expected NULL\n", NewAcl);
3450 win_skip(
"ACLs not implemented - skipping tests\n");
3456 res =
AllocateAndInitializeSid( &SIDAuthWorld, 1,
SECURITY_WORLD_RID, 0, 0, 0, 0, 0, 0, 0, &EveryoneSid);
3474 res = pSetEntriesInAclA(1, &ExplicitAccess, OldAcl, &NewAcl);
3476 ok(NewAcl !=
NULL,
"returned acl was NULL\n");
3482 res = pSetEntriesInAclA(1, &ExplicitAccess, OldAcl, &NewAcl);
3484 ok(NewAcl !=
NULL,
"returned acl was NULL\n");
3489 skip(
"Non-English locale (test with hardcoded 'Everyone')\n");
3495 res = pSetEntriesInAclA(1, &ExplicitAccess, OldAcl, &NewAcl);
3497 ok(NewAcl !=
NULL,
"returned acl was NULL\n");
3501 res = pSetEntriesInAclA(1, &ExplicitAccess, OldAcl, &NewAcl);
3504 "SetEntriesInAclA failed: %u\n",
res);
3507 "returned acl wasn't NULL: %p\n", NewAcl);
3511 res = pSetEntriesInAclA(1, &ExplicitAccess, OldAcl, &NewAcl);
3514 "SetEntriesInAclA failed: %u\n",
res);
3517 "returned acl wasn't NULL: %p\n", NewAcl);
3521 res = pSetEntriesInAclA(1, &ExplicitAccess, OldAcl, &NewAcl);
3523 ok(NewAcl !=
NULL,
"returned acl was NULL\n");
3529 res = pSetEntriesInAclA(1, &ExplicitAccess, OldAcl, &NewAcl);
3531 ok(NewAcl !=
NULL,
"returned acl was NULL\n");
3537 res = pSetEntriesInAclA(1, &ExplicitAccess, OldAcl, &NewAcl);
3539 ok(NewAcl !=
NULL,
"returned acl was NULL\n");
3555 pRtlInitAnsiString(&
str,
name);
3558 ok(!
status,
"RtlAnsiStringToUnicodeString failed with %08x\n",
status);
3561 ok(
ret,
"RtlDosPathNameToNtPathName_U failed\n");
3563 pRtlFreeUnicodeString(&
strW);
3574 ok_(__FILE__,
line)(bret,
"GetAclInformation failed\n");
3578 "GetAclInformation returned unexpected entry count (%d != 2)\n",
3583 bret = pGetAce(
dacl, 0, (
VOID **)&ace);
3584 ok_(__FILE__,
line)(bret,
"Failed to get Current User ACE\n");
3586 bret =
EqualSid(&ace->SidStart, user_sid);
3592 "Current User ACE has unexpected flags (0x%x != 0x%x)\n",
3596 "Current User ACE has unexpected mask (0x%x != 0x%x)\n",
3601 bret = pGetAce(
dacl, 1, (
VOID **)&ace);
3602 ok_(__FILE__,
line)(bret,
"Failed to get Administators Group ACE\n");
3604 bret =
EqualSid(&ace->SidStart, admin_sid);
3610 "Administators Group ACE has unexpected flags (0x%x != 0x%x)\n",
3614 "Administators Group ACE has unexpected mask (0x%x != 0x%x)\n",
3622 DWORD sid_size =
sizeof(admin_ptr), user_size;
3623 PSID admin_sid = (
PSID) admin_ptr, user_sid;
3640 if (!pGetSecurityInfo || !pGetNamedSecurityInfoA || !pCreateWellKnownSid)
3642 win_skip(
"Required functions are not available\n");
3653 win_skip(
"Failed to get current user token\n");
3658 "GetTokenInformation(TokenUser) failed with error %d\n",
GetLastError());
3661 ok(bret,
"GetTokenInformation(TokenUser) failed with error %d\n",
GetLastError());
3665 sa.nLength =
sizeof(
sa);
3666 sa.lpSecurityDescriptor = pSD;
3667 sa.bInheritHandle =
TRUE;
3669 pCreateWellKnownSid(WinBuiltinAdministratorsSid,
NULL, admin_sid, &sid_size);
3672 ok(bret,
"Failed to initialize ACL.\n");
3675 ok(bret,
"Failed to add Current User to ACL.\n");
3678 ok(bret,
"Failed to add Administrator Group to ACL.\n");
3680 ok(bret,
"Failed to add ACL to security descriptor.\n");
3694 win_skip(
"GetNamedSecurityInfoA is not implemented\n");
3697 ok(!
error,
"GetNamedSecurityInfo failed with error %d\n",
error);
3725 ok(bret,
"Failed to initialize ACL\n");
3727 ok(bret,
"Failed to add ACL to security descriptor\n");
3732 sa.nLength =
sizeof(
sa);
3733 sa.lpSecurityDescriptor = pSD;
3734 sa.bInheritHandle =
TRUE;
3745 ok(bret,
"GetAclInformation failed\n");
3746 ok(acl_size.
AceCount == 0,
"GetAclInformation returned unexpected entry count (%d != 0).\n",
3755 ok(bret,
"GetAclInformation failed\n");
3756 ok(acl_size.
AceCount == 0,
"GetAclInformation returned unexpected entry count (%d != 0).\n",
3767 attr.RootDirectory = 0;
3768 attr.ObjectName = &tmpfileW;
3771 attr.SecurityQualityOfService =
NULL;
3776 pRtlFreeUnicodeString(&tmpfileW);
3793 ok(bret,
"Failed to initialize ACL\n");
3795 ok(bret,
"Failed to add ACL to security descriptor\n");
3802 attr.RootDirectory = 0;
3803 attr.ObjectName = &tmpfileW;
3805 attr.SecurityDescriptor = pSD;
3806 attr.SecurityQualityOfService =
NULL;
3811 pRtlFreeUnicodeString(&tmpfileW);
3819 ok(bret,
"GetAclInformation failed\n");
3820 ok(acl_size.
AceCount == 0,
"GetAclInformation returned unexpected entry count (%d != 0).\n",
3829 ok(bret,
"GetAclInformation failed\n");
3831 ok(acl_size.
AceCount == 0,
"GetAclInformation returned unexpected entry count (%d != 0).\n",
3858 ok(bret,
"Failed to initialize ACL\n");
3860 ok(bret,
"Failed to add ACL to security desciptor\n");
3865 sa.nLength =
sizeof(
sa);
3866 sa.lpSecurityDescriptor = pSD;
3867 sa.bInheritHandle =
TRUE;
3877 ok(bret,
"GetAclInformation failed\n");
3879 ok(acl_size.
AceCount == 0,
"GetAclInformation returned unexpected entry count (%d != 0).\n",
3886 ok(bret ==
FALSE,
"RemoveDirectoryA unexpected succeeded\n");
3893 ok(bret,
"Failed to initialize ACL.\n");
3895 ok(bret,
"Failed to add Current User to ACL.\n");
3897 ok(bret,
"Failed to add ACL to security desciptor.\n");
3912 attr.RootDirectory = 0;
3913 attr.ObjectName = &tmpfileW;
3916 attr.SecurityQualityOfService =
NULL;
3938 ok(bret,
"Failed to initialize ACL\n");
3940 ok(bret,
"Failed to add ACL to security desciptor\n");
3947 attr.RootDirectory = 0;
3948 attr.ObjectName = &tmpfileW;
3950 attr.SecurityDescriptor = pSD;
3951 attr.SecurityQualityOfService =
NULL;
3964 ok(bret,
"GetAclInformation failed\n");
3966 ok(acl_size.
AceCount == 0,
"GetAclInformation returned unexpected entry count (%d != 0).\n",
3975 ok(bret,
"GetAclInformation failed\n");
3977 ok(acl_size.
AceCount == 0,
"GetAclInformation returned unexpected entry count (%d != 0).\n",
3985 ok(bret ==
TRUE,
"RemoveDirectoryA should always succeed\n");
3994 PSID admin_sid = (
PSID) admin_ptr, users_sid = (
PSID) users_ptr;
3995 PSID system_sid = (
PSID) system_ptr, user_sid, localsys_sid;
3996 DWORD sid_size =
sizeof(admin_ptr), user_size;
3997 char invalid_path[] =
"/an invalid file path";
3998 int users_ace_id = -1, admins_ace_id = -1,
i;
3999 char software_key[] =
"MACHINE\\Software";
4009 BOOL owner_defaulted;
4010 BOOL group_defaulted;
4011 BOOL dacl_defaulted;
4019 if (!pSetNamedSecurityInfoA || !pGetNamedSecurityInfoA || !pCreateWellKnownSid)
4021 win_skip(
"Required functions are not available\n");
4032 win_skip(
"Failed to get current user token\n");
4037 "GetTokenInformation(TokenUser) failed with error %d\n",
GetLastError());
4040 ok(bret,
"GetTokenInformation(TokenUser) failed with error %d\n",
GetLastError());
4045 ok(bret,
"GetWindowsDirectory failed with error %d\n",
GetLastError());
4053 win_skip(
"GetNamedSecurityInfoA is not implemented\n");
4057 ok(!
error,
"GetNamedSecurityInfo failed with error %d\n",
error);
4060 ok(bret,
"GetSecurityDescriptorControl failed with error %d\n",
GetLastError());
4063 "control (0x%x) doesn't have (SE_SELF_RELATIVE|SE_DACL_PRESENT) flags set\n",
control);
4069 ok(bret,
"GetSecurityDescriptorOwner failed with error %d\n",
GetLastError());
4070 ok(owner !=
NULL,
"owner should not be NULL\n");
4073 ok(bret,
"GetSecurityDescriptorGroup failed with error %d\n",
GetLastError());
4081 win_skip(
"NT4 does not support GetNamedSecutityInfo with a NULL descriptor\n");
4093 ok(!
error,
"GetNamedSecurityInfo failed with error %d\n",
error);
4094 ok(pDacl !=
NULL,
"DACL should not be NULL\n");
4106 ok(
GetLastError() == 0xdeadbeef,
"Expected last error to remain unchanged.\n");
4112 pCreateWellKnownSid(WinBuiltinAdministratorsSid,
NULL, admin_sid, &sid_size);
4114 ok(bret,
"Failed to initialize ACL.\n");
4116 ok(bret,
"Failed to add Current User to ACL.\n");
4118 ok(bret,
"Failed to add Administrator Group to ACL.\n");
4120 ok(bret,
"Failed to add ACL to security descriptor.\n");
4130 win_skip(
"SetNamedSecurityInfoA is not implemented\n");
4135 ok(!
error,
"SetNamedSecurityInfoA failed with error %d\n",
error);
4141 win_skip(
"GetNamedSecurityInfoA is not implemented\n");
4146 ok(!
error,
"GetNamedSecurityInfo failed with error %d\n",
error);
4149 ok(bret,
"GetAclInformation failed\n");
4152 bret = pGetAce(pDacl, 0, (
VOID **)&ace);
4153 ok(bret,
"Failed to get Current User ACE.\n");
4154 bret =
EqualSid(&ace->SidStart, user_sid);
4155 ok(bret,
"Current User ACE (%s) != Current User SID (%s).\n",
4158 "Current User ACE has unexpected flags (0x%x != 0x0)\n", ((
ACE_HEADER *)ace)->
AceFlags);
4159 ok(ace->Mask == 0x1f01ff,
4160 "Current User ACE has unexpected mask (0x%x != 0x1f01ff)\n", ace->Mask);
4164 bret = pGetAce(pDacl, 1, (
VOID **)&ace);
4165 ok(bret,
"Failed to get Administators Group ACE.\n");
4166 bret =
EqualSid(&ace->SidStart, admin_sid);
4167 ok(bret ||
broken(!bret) ,
"Administators Group ACE (%s) != Administators Group SID (%s).\n",
4170 "Administators Group ACE has unexpected flags (0x%x != 0x0)\n", ((
ACE_HEADER *)ace)->
AceFlags);
4172 "Administators Group ACE has unexpected mask (0x%x != 0x1f01ff)\n", ace->Mask);
4179 ok(bret,
"Failed to initialize ACL.\n");
4182 ok(!
error,
"SetNamedSecurityInfoA failed with error %d\n",
error);
4187 ok(!
error,
"GetNamedSecurityInfo failed with error %d\n",
error);
4190 ok(bret,
"GetAclInformation failed\n");
4193 bret = pGetAce(pDacl, 0, (
VOID **)&ace);
4194 ok(bret,
"Failed to get ACE.\n");
4208 ok(!
error,
"SetNamedSecurityInfoA failed with error %d\n",
error);
4212 ok(!
error,
"GetNamedSecurityInfo failed with error %d\n",
error);
4226 ok(bret,
"Failed to initialize ACL.\n");
4228 ok(bret,
"Failed to add ACL to security descriptor.\n");
4258 ok(bret,
"Failed to initialize ACL.\n");
4260 ok(bret,
"Failed to add Current User to ACL.\n");
4262 ok(bret,
"Failed to add Current User to ACL.\n");
4264 ok(bret,
"Failed to add ACL to security descriptor.\n");
4274 ok(bret,
"Failed to initialize ACL.\n");
4276 ok(bret,
"Failed to add Current User to ACL.\n");
4278 ok(bret,
"Failed to add Current User to ACL.\n");
4280 ok(bret,
"Failed to add ACL to security descriptor.\n");
4292 sid_size =
sizeof(system_ptr);
4293 pCreateWellKnownSid(WinLocalSystemSid,
NULL, system_sid, &sid_size);
4297 ok(!
error,
"GetNamedSecurityInfo failed with error %d\n",
error);
4299 bret =
AllocateAndInitializeSid(&SIDAuthNT, 1,
SECURITY_LOCAL_SYSTEM_RID, 0, 0, 0, 0, 0, 0, 0, &localsys_sid);
4300 ok(bret,
"AllocateAndInitializeSid failed with error %d\n",
GetLastError());
4303 ok(bret,
"GetSecurityDescriptorOwner failed with error %d\n",
GetLastError());
4304 ok(owner !=
NULL,
"owner should not be NULL\n");
4306 "MACHINE\\Software owner SID (%s) != Administrators SID (%s) or Local System Sid (%s).\n",
4310 ok(bret,
"GetSecurityDescriptorGroup failed with error %d\n",
GetLastError());
4314 "MACHINE\\Software group SID (%s) != Local System SID (%s or %s)\n",
4319 sid_size =
sizeof(users_ptr);
4320 pCreateWellKnownSid(WinBuiltinUsersSid,
NULL, users_sid, &sid_size);
4323 ok(!
error,
"GetNamedSecurityInfo failed with error %d\n",
error);
4326 ok(bret,
"GetSecurityDescriptorDacl failed with error %d\n",
GetLastError());
4327 ok(dacl_present,
"DACL should be present\n");
4328 ok(pDacl &&
IsValidAcl(pDacl),
"GetSecurityDescriptorDacl returned invalid DACL.\n");
4330 ok(bret,
"GetAclInformation failed\n");
4331 ok(acl_size.
AceCount != 0,
"GetAclInformation returned no ACLs\n");
4334 bret = pGetAce(pDacl,
i, (
VOID **)&ace);
4335 ok(bret,
"Failed to get ACE %d.\n",
i);
4336 bret =
EqualSid(&ace->SidStart, users_sid);
4337 if (bret) users_ace_id =
i;
4338 bret =
EqualSid(&ace->SidStart, admin_sid);
4339 if (bret) admins_ace_id =
i;
4341 ok(users_ace_id != -1 ||
broken(users_ace_id == -1) ,
4342 "Builtin Users ACE not found.\n");
4343 if (users_ace_id != -1)
4345 bret = pGetAce(pDacl, users_ace_id, (
VOID **)&ace);
4346 ok(bret,
"Failed to get Builtin Users ACE.\n");
4352 "Builtin Users ACE has unexpected flags (0x%x != 0x%x)\n",
flags,
4356 "Builtin Users ACE has unexpected mask (0x%x != 0x%x)\n",
4359 ok(admins_ace_id != -1,
"Builtin Admins ACE not found.\n");
4360 if (admins_ace_id != -1)
4362 bret = pGetAce(pDacl, admins_ace_id, (
VOID **)&ace);
4363 ok(bret,
"Failed to get Builtin Admins ACE.\n");
4371 "Builtin Admins ACE has unexpected flags (0x%x != 0x0)\n",
flags);
4373 "Builtin Admins ACE has unexpected mask (0x%x != 0x%x)\n", ace->Mask,
KEY_ALL_ACCESS);
4384 static const WCHAR Blank[] = { 0 };
4390 const char *sidstring;
4432 if (!pConvertStringSecurityDescriptorToSecurityDescriptorA)
4434 win_skip(
"ConvertStringSecurityDescriptorToSecurityDescriptor is not available\n");
4438 for (
i = 0;
i <
sizeof(cssd)/
sizeof(cssd[0]);
i++)
4443 ret = pConvertStringSecurityDescriptorToSecurityDescriptorA(
4444 cssd[
i].sidstring, cssd[
i].revision, &pSD,
NULL);
4446 ok(
ret == cssd[
i].
ret,
"(%02u) Expected %s (%d)\n",
i, cssd[
i].
ret ?
"success" :
"failure",
GLE);
4449 (cssd[
i].altGLE &&
GLE == cssd[
i].altGLE),
4450 "(%02u) Unexpected last error %d\n",
i,
GLE);
4457 ret = pConvertStringSecurityDescriptorToSecurityDescriptorA(
4461 "ConvertStringSecurityDescriptorToSecurityDescriptor should have failed with ERROR_INVALID_PARAMETER instead of %d\n",
4465 ret = pConvertStringSecurityDescriptorToSecurityDescriptorW(
4468 "ConvertStringSecurityDescriptorToSecurityDescriptor should have failed with ERROR_INVALID_PARAMETER instead of %d\n",
4472 ret = pConvertStringSecurityDescriptorToSecurityDescriptorA(
4473 "D:(A;;ROB;;;WD)", 0xdeadbeef,
NULL,
NULL);
4475 "ConvertStringSecurityDescriptorToSecurityDescriptor should have failed with ERROR_INVALID_PARAMETER instead of %d\n",
4479 ret = pConvertStringSecurityDescriptorToSecurityDescriptorA(
4482 "ConvertStringSecurityDescriptorToSecurityDescriptor should have failed with ERROR_INVALID_PARAMETER instead of %d\n",
4487 ret = pConvertStringSecurityDescriptorToSecurityDescriptorW(
4489 ok(
ret,
"ConvertStringSecurityDescriptorToSecurityDescriptor failed with error %d\n",
GetLastError());
4493 ret = pConvertStringSecurityDescriptorToSecurityDescriptorA(
4494 "D:P(A;;GRGW;;;BA)(A;;GRGW;;;S-1-5-21-0-0-0-1000)S:(ML;;NWNR;;;S-1-16-12288)",
SDDL_REVISION_1, &pSD,
NULL);
4496 "ConvertStringSecurityDescriptorToSecurityDescriptor failed with error %u\n",
GetLastError());
4539 if (!pConvertSecurityDescriptorToStringSecurityDescriptorA)
4541 win_skip(
"ConvertSecurityDescriptorToStringSecurityDescriptor is not available\n");
4544 if (!pCreateWellKnownSid)
4546 win_skip(
"CreateWellKnownSid is not available\n");
4552#define CHECK_RESULT_AND_FREE(exp_str) \
4553 ok(strcmp(string, (exp_str)) == 0, "String mismatch (expected \"%s\", got \"%s\")\n", (exp_str), string); \
4554 ok(len >= (strlen(exp_str) + 1), "Length mismatch (expected %d, got %d)\n", lstrlenA(exp_str) + 1, len); \
4557#define CHECK_ONE_OF_AND_FREE(exp_str1, exp_str2) \
4558 ok(strcmp(string, (exp_str1)) == 0 || strcmp(string, (exp_str2)) == 0, "String mismatch (expected\n\"%s\" or\n\"%s\", got\n\"%s\")\n", (exp_str1), (exp_str2), string); \
4559 ok(len >= (strlen(exp_str1) + 1) || len >= (strlen(exp_str2) + 1), "Length mismatch (expected %d or %d, got %d)\n", lstrlenA(exp_str1) + 1, lstrlenA(exp_str2) + 1, len); \
4563 ok(pConvertSecurityDescriptorToStringSecurityDescriptorA(&
desc,
SDDL_REVISION_1, sec_info, &
string, &
len),
"Conversion failed\n");
4567 pCreateWellKnownSid(WinLocalSid,
NULL, sid_buf, &
size);
4569 ok(pConvertSecurityDescriptorToStringSecurityDescriptorA(&
desc,
SDDL_REVISION_1, sec_info, &
string, &
len),
"Conversion failed\n");
4573 ok(pConvertSecurityDescriptorToStringSecurityDescriptorA(&
desc,
SDDL_REVISION_1, sec_info, &
string, &
len),
"Conversion failed\n");
4576 size =
sizeof(sid_buf);
4577 pCreateWellKnownSid(WinLocalSystemSid,
NULL, sid_buf, &
size);
4579 ok(pConvertSecurityDescriptorToStringSecurityDescriptorA(&
desc,
SDDL_REVISION_1, sec_info, &
string, &
len),
"Conversion failed\n");
4582 pConvertStringSidToSidA(
"S-1-5-21-93476-23408-4576", &psid);
4584 ok(pConvertSecurityDescriptorToStringSecurityDescriptorA(&
desc,
SDDL_REVISION_1, sec_info, &
string, &
len),
"Conversion failed\n");
4590 pacl = (
PACL)acl_buf;
4593 ok(pConvertSecurityDescriptorToStringSecurityDescriptorA(&
desc,
SDDL_REVISION_1, sec_info, &
string, &
len),
"Conversion failed\n");
4597 ok(pConvertSecurityDescriptorToStringSecurityDescriptorA(&
desc,
SDDL_REVISION_1, sec_info, &
string, &
len),
"Conversion failed\n");
4600 pConvertStringSidToSidA(
"S-1-5-6", &psid2);
4602 ok(pConvertSecurityDescriptorToStringSecurityDescriptorA(&
desc,
SDDL_REVISION_1, sec_info, &
string, &
len),
"Conversion failed\n");
4606 ok(pConvertSecurityDescriptorToStringSecurityDescriptorA(&
desc,
SDDL_REVISION_1, sec_info, &
string, &
len),
"Conversion failed\n");
4610 ok(pConvertSecurityDescriptorToStringSecurityDescriptorA(&
desc,
SDDL_REVISION_1, sec_info, &
string, &
len),
"Conversion failed\n");
4611 CHECK_RESULT_AND_FREE(
"O:SYG:S-1-5-21-93476-23408-4576D:(A;NP;GAGXGWGR;;;SU)(A;IOID;CCDC;;;SU)(D;OICI;0xffffffff;;;S-1-5-21-93476-23408-4576)");
4614 pacl = (
PACL)acl_buf;
4617 ok(pConvertSecurityDescriptorToStringSecurityDescriptorA(&
desc,
SDDL_REVISION_1, sec_info, &
string, &
len),
"Conversion failed\n");
4623 if (pConvertSecurityDescriptorToStringSecurityDescriptorA(&
desc,
SDDL_REVISION_1, sec_info, &
string, &
len))
4626 "O:SYG:S-1-5-21-93476-23408-4576D:NO_ACCESS_CONTROLS:(AU;OICINPIOIDSAFA;CCDCLCSWRPRC;;;SU)" );
4631 if (pConvertSecurityDescriptorToStringSecurityDescriptorA(&
desc,
SDDL_REVISION_1, sec_info, &
string, &
len))
4633 CHECK_ONE_OF_AND_FREE(
"O:SYG:S-1-5-21-93476-23408-4576D:S:(AU;OICINPIOIDSAFA;CCDCLCSWRPRC;;;SU)(AU;NPSA;0x12019f;;;SU)",
4634 "O:SYG:S-1-5-21-93476-23408-4576D:NO_ACCESS_CONTROLS:(AU;OICINPIOIDSAFA;CCDCLCSWRPRC;;;SU)(AU;NPSA;0x12019f;;;SU)" );
4650 | 0x00000040 | 0x00000080
4661 LPCSTR fmt =
"Expected error %s, got %u\n";
4669 for (bit = 0; bit < 16; ++bit)
4676 DWORD dwExpect = (bitOfInterest & immutable)
4678 LPCSTR strExpect = (bitOfInterest & immutable)
4679 ?
"ERROR_INVALID_PARAMETER" :
"0xbebecaca";
4681 ctrl = (bitOfInterest &
mutable) ?
ref + bitOfInterest :
ref;
4682 setOrClear ^= bitOfInterest;
4684 pSetSecurityDescriptorControl (sec, bitOfInterest, setOrClear);
4689 setOrClear ^= bitOfInterest;
4691 pSetSecurityDescriptorControl (sec, bitOfInterest, setOrClear);
4699 for (bit = 0; bit < 16; ++bit)
4706 DWORD dwExpect = ((1 << bit) & immutable)
4708 LPCSTR strExpect = ((1 << bit) & immutable)
4709 ?
"ERROR_INVALID_PARAMETER" :
"0xbebecaca";
4711 ctrl = ((1 << bit) & immutable) ?
test :
ref |
mutable;
4712 setOrClear ^= bitsOfInterest;
4714 pSetSecurityDescriptorControl (sec, bitsOfInterest, setOrClear | (1 << bit));
4719 ctrl = ((1 << bit) & immutable) ?
test :
ref | (1 << bit);
4720 setOrClear ^= bitsOfInterest;
4722 pSetSecurityDescriptorControl (sec, bitsOfInterest, setOrClear | (1 << bit));
4742 if (!pConvertStringSecurityDescriptorToSecurityDescriptorA)
4744 win_skip(
"ConvertStringSecurityDescriptorToSecurityDescriptor is not available\n");
4748 ok(pConvertStringSecurityDescriptorToSecurityDescriptorA(
4750 "G:S-1-5-21-93476-23408-4576"
4751 "D:(A;NP;GAGXGWGR;;;SU)(A;IOID;CCDC;;;SU)"
4752 "(D;OICI;0xffffffff;;;S-1-5-21-93476-23408-4576)"
4753 "S:(AU;OICINPIOIDSAFA;CCDCLCSWRPRC;;;SU)(AU;NPSA;0x12019f;;;SU)",
4760 ok(pConvertStringSecurityDescriptorToSecurityDescriptorA(
4762 "G:S-1-5-21-93476-23408-4576",
4769 ok(pConvertStringSecurityDescriptorToSecurityDescriptorA(
4771 "G:S-1-5-21-93476-23408-4576"
4772 "D:(A;NP;GAGXGWGR;;;SU)(A;IOID;CCDC;;;SU)(D;OICI;0xffffffff;;;S-1-5-21-93476-23408-4576)"
4773 "S:(AU;OICINPIOIDSAFA;CCDCLCSWRPRC;;;SU)(AU;NPSA;0x12019f;;;SU)",
SDDL_REVISION_1, &sec, &dwDescSize),
"Creating descriptor failed\n");
4781 ok(retSize <= dwDescSize,
"Buffer too small (%d vs %d)\n", retSize, dwDescSize);
4782 ok(pConvertSecurityDescriptorToStringSecurityDescriptorA(
buf,
SDDL_REVISION_1, sec_info, &
string, &
len),
"Conversion failed\n");
4789 ok(retSize <= dwDescSize,
"Buffer too small (%d vs %d)\n", retSize, dwDescSize);
4792 CHECK_ONE_OF_AND_FREE(
"G:S-1-5-21-93476-23408-4576D:(A;NP;GAGXGWGR;;;SU)(A;IOID;CCDC;;;SU)(D;OICI;0xffffffff;;;S-1-5-21-93476-23408-4576)",
4793 "G:S-1-5-21-93476-23408-4576D:P(A;NP;GAGXGWGR;;;SU)(A;IOID;CCDC;;;SU)(D;OICI;0xffffffff;;;S-1-5-21-93476-23408-4576)");
4799 ok(retSize == dwDescSize,
"Buffer too small (%d vs %d)\n", retSize, dwDescSize);
4800 ok(pConvertSecurityDescriptorToStringSecurityDescriptorA(
buf,
SDDL_REVISION_1, sec_info, &
string, &
len),
"Conversion failed\n");
4802 "G:S-1-5-21-93476-23408-4576"
4803 "D:(A;NP;GAGXGWGR;;;SU)(A;IOID;CCDC;;;SU)(D;OICI;0xffffffff;;;S-1-5-21-93476-23408-4576)"
4804 "S:(AU;OICINPIOIDSAFA;CCDCLCSWRPRC;;;SU)(AU;NPSA;0x12019f;;;SU)",
4806 "G:S-1-5-21-93476-23408-4576"
4807 "D:P(A;NP;GAGXGWGR;;;SU)(A;IOID;CCDC;;;SU)(D;OICI;0xffffffff;;;S-1-5-21-93476-23408-4576)"
4808 "S:(AU;OICINPIOIDSAFA;CCDCLCSWRPRC;;;SU)(AU;NPSA;0x12019f;;;SU)");
4819#undef CHECK_RESULT_AND_FREE
4820#undef CHECK_ONE_OF_AND_FREE
4832 win_skip(
"InitializeAcl is not implemented\n");
4868 win_skip(
"ACL_REVISION4 is not implemented on NT4\n");
4880 PSID domain_users_sid = (
PSID) domain_users_ptr, domain_sid;
4882 int domain_users_ace_id = -1, admins_ace_id = -1,
i;
4883 DWORD sid_size =
sizeof(admin_ptr),
l =
sizeof(
b);
4884 PSID admin_sid = (
PSID) admin_ptr, user_sid;
4886 BOOL owner_defaulted, group_defaulted;
4887 BOOL dacl_defaulted, dacl_present;
4898 if (!pGetSecurityInfo || !pSetSecurityInfo)
4900 win_skip(
"[Get|Set]SecurityInfo is not available\n");
4911 win_skip(
"Failed to get current user token\n");
4915 ok(bret,
"GetTokenInformation(TokenUser) failed with error %d\n",
GetLastError());
4924 skip(
"Couldn't create an object for GetSecurityInfo test\n");
4933 win_skip(
"GetSecurityInfo is not implemented\n");
4938 ok(pSD !=
NULL,
"GetSecurityInfo\n");
4939 ok(owner !=
NULL,
"GetSecurityInfo\n");
4944 win_skip(
"No ACL information returned\n");
4948 if (!pCreateWellKnownSid)
4950 win_skip(
"NULL parameter test would crash on NT4\n");
4961 ok(owner !=
NULL,
"GetSecurityInfo\n");
4966 win_skip(
"No ACL information returned\n");
4972 pCreateWellKnownSid(WinBuiltinAdministratorsSid,
NULL, admin_sid, &sid_size);
4974 ok(bret,
"Failed to initialize ACL.\n");
4976 ok(bret,
"Failed to add Current User to ACL.\n");
4978 ok(bret,
"Failed to add Administrator Group to ACL.\n");
4980 ok(bret,
"Failed to add ACL to security descriptor.\n");
4987 ok(pDacl &&
IsValidAcl(pDacl),
"GetSecurityInfo returned invalid DACL.\n");
4989 ok(bret,
"GetAclInformation failed\n");
4992 bret = pGetAce(pDacl, 0, (
VOID **)&ace);
4993 ok(bret,
"Failed to get Current User ACE.\n");
4994 bret =
EqualSid(&ace->SidStart, user_sid);
4997 "Current User ACE has unexpected flags (0x%x != 0x0)\n", ((
ACE_HEADER *)ace)->
AceFlags);
4998 ok(ace->Mask == 0x1f01ff,
"Current User ACE has unexpected mask (0x%x != 0x1f01ff)\n",
5003 bret = pGetAce(pDacl, 1, (
VOID **)&ace);
5004 ok(bret,
"Failed to get Administators Group ACE.\n");
5005 bret =
EqualSid(&ace->SidStart, admin_sid);
5006 ok(bret,
"Administators Group ACE (%s) != Administators Group SID (%s).\n",
debugstr_sid(&ace->SidStart),
debugstr_sid(admin_sid));
5008 "Administators Group ACE has unexpected flags (0x%x != 0x0)\n", ((
ACE_HEADER *)ace)->
AceFlags);
5009 ok(ace->Mask == 0x1f01ff,
5010 "Administators Group ACE has unexpected mask (0x%x != 0x1f01ff)\n", ace->Mask);
5021 win_skip(
"Failed to get current domain SID\n");
5024 sid_size =
sizeof(domain_users_ptr);
5025 pCreateWellKnownSid(WinAccountDomainUsersSid, domain_sid, domain_users_sid, &sid_size);
5032 ok(!
ret,
"GetNamedSecurityInfo failed with error %d\n",
ret);
5035 ok(bret,
"GetSecurityDescriptorOwner failed with error %d\n",
GetLastError());
5036 ok(owner !=
NULL,
"owner should not be NULL\n");
5038 "Process owner SID != Administrators SID.\n");
5041 ok(bret,
"GetSecurityDescriptorGroup failed with error %d\n",
GetLastError());
5043 ok(
EqualSid(
group, domain_users_sid),
"Process group SID != Domain Users SID.\n");
5049 ok(!
ret,
"GetSecurityInfo failed with error %d\n",
ret);
5052 ok(bret,
"GetSecurityDescriptorDacl failed with error %d\n",
GetLastError());
5053 ok(dacl_present,
"DACL should be present\n");
5054 ok(pDacl &&
IsValidAcl(pDacl),
"GetSecurityDescriptorDacl returned invalid DACL.\n");
5056 ok(bret,
"GetAclInformation failed\n");
5057 ok(acl_size.
AceCount != 0,
"GetAclInformation returned no ACLs\n");
5060 bret = pGetAce(pDacl,
i, (
VOID **)&ace);
5061 ok(bret,
"Failed to get ACE %d.\n",
i);
5062 bret =
EqualSid(&ace->SidStart, domain_users_sid);
5063 if (bret) domain_users_ace_id =
i;
5064 bret =
EqualSid(&ace->SidStart, admin_sid);
5065 if (bret) admins_ace_id =
i;
5067 ok(domain_users_ace_id != -1 ||
broken(domain_users_ace_id == -1) ,
5068 "Domain Users ACE not found.\n");
5069 if (domain_users_ace_id != -1)
5071 bret = pGetAce(pDacl, domain_users_ace_id, (
VOID **)&ace);
5072 ok(bret,
"Failed to get Domain Users ACE.\n");
5075 "Domain Users ACE has unexpected flags (0x%x != 0x%x)\n",
flags,
5077 ok(ace->Mask ==
GENERIC_READ,
"Domain Users ACE has unexpected mask (0x%x != 0x%x)\n",
5080 ok(admins_ace_id != -1 ||
broken(admins_ace_id == -1) ,
5081 "Builtin Admins ACE not found.\n");
5082 if (admins_ace_id != -1)
5084 bret = pGetAce(pDacl, admins_ace_id, (
VOID **)&ace);
5085 ok(bret,
"Failed to get Builtin Admins ACE.\n");
5087 ok(
flags == 0x0,
"Builtin Admins ACE has unexpected flags (0x%x != 0x0)\n",
flags);
5089 "Builtin Admins ACE has unexpected mask (0x%x != 0x%x)\n", ace->Mask,
PROCESS_ALL_ACCESS);
5098 if (!pGetSidSubAuthority || !pConvertStringSidToSidA || !pIsValidSid || !pGetSidSubAuthorityCount)
5100 win_skip(
"Some functions not available\n");
5105 ok(pConvertStringSidToSidA(
"S-1-5-21-93476-23408-4576",&psid),
"ConvertStringSidToSidA failed\n");
5106 ok(pIsValidSid(psid),
"Sid is not valid\n");
5108 ok(*pGetSidSubAuthorityCount(psid) == 4,
"GetSidSubAuthorityCount gave %d expected 4\n",*pGetSidSubAuthorityCount(psid));
5111 ok(*pGetSidSubAuthority(psid,0) == 21,
"GetSidSubAuthority gave %d expected 21\n",*pGetSidSubAuthority(psid,0));
5114 ok(*pGetSidSubAuthority(psid,1) == 93476,
"GetSidSubAuthority gave %d expected 93476\n",*pGetSidSubAuthority(psid,1));
5117 ok(pGetSidSubAuthority(psid,4) !=
NULL,
"Expected out of bounds GetSidSubAuthority to return a non-NULL pointer\n");
5131 if (!pCheckTokenMembership)
5133 win_skip(
"CheckTokenMembership is not available\n");
5145 "GetTokenInformation(TokenGroups) %s with error %d\n",
5149 ok(
ret,
"GetTokenInformation(TokenGroups) failed with error %d\n",
GetLastError());
5161 skip(
"user not a member of any group\n");
5168 ok(is_member,
"CheckTokenMembership should have detected sid as member\n");
5173 ok(is_member,
"CheckTokenMembership should have detected sid as member\n");
5177 ret = pCheckTokenMembership(process_token, token_groups->
Groups[
i].
Sid, &is_member);
5179 "CheckTokenMembership with process token %s with error %d\n",
5181 ok(!is_member,
"CheckTokenMembership should have cleared is_member\n");
5200 win_skip(
"AllocateAndInitializeSid is not implemented\n");
5205 "AllocateAndInitializeSid shouldn't have set last error to %d\n",
5209 0, 0, 0, 0, 0, 0, 0, &sid2);
5214 ok(!
ret,
"World and domain admins sids shouldn't have been equal\n");
5217 "EqualSid should have set last error to ERROR_SUCCESS instead of %d\n",
5222 ok(!sid2,
"FreeSid should have returned NULL instead of %p\n", sid2);
5224 "FreeSid shouldn't have set last error to %d\n",
5233 ok(
ret,
"Same sids should have been equal %s != %s\n",
5237 "EqualSid should have set last error to ERROR_SUCCESS instead of %d\n",
5240 ((
SID *)sid2)->Revision = 2;
5243 ok(!
ret,
"EqualSid with invalid sid should have returned FALSE\n");
5246 "EqualSid should have set last error to ERROR_SUCCESS instead of %d\n",
5257 DWORD required_len, buffer_len;
5271 ok(required_len != 0,
"Outputted buffer length was %u\n", required_len);
5278 ok(required_len != 0 && required_len != 1,
"Outputted buffer length was %u\n", required_len);
5285 required_len =
UNLEN + 1;
5302 ok(required_len != 0,
"Outputted buffer length was %u\n", required_len);
5307 buffer_len = required_len;
5311 ok(buffer_len == required_len ||
5312 broken(buffer_len == required_len /
sizeof(
WCHAR)),
5313 "Outputted buffer length was %u\n", buffer_len);
5323 ok(buffer_len == required_len,
"Outputted buffer length was %u\n", buffer_len);
5330 DWORD required_len, buffer_len;
5344 ok(required_len != 0,
"Outputted buffer length was %u\n", required_len);
5351 ok(required_len != 0 && required_len != 1,
"Outputted buffer length was %u\n", required_len);
5358 required_len =
UNLEN + 1;
5373 ok(required_len != 0,
"Outputted buffer length was %u\n", required_len);
5378 buffer_len = required_len;
5382 ok(buffer_len == required_len,
"Outputted buffer length was %u\n", buffer_len);
5392 "Output buffer was altered\n");
5393 ok(buffer_len == required_len,
"Outputted buffer length was %u\n", buffer_len);
5412 if (!pCreateRestrictedToken)
5414 win_skip(
"CreateRestrictedToken is not available\n");
5443 skip(
"User not a member of any group\n");
5450 ok(is_member,
"not a member\n");
5460 ok(is_member,
"Expected SeChangeNotifyPrivilege to be enabled\n");
5473 ret = pCheckTokenMembership(r_token, token_groups->
Groups[
i].
Sid, &is_member);
5475 ok(!is_member,
"not a member\n");
5491 "got wrong attributes\n");
5493 "got wrong attributes\n");
5510 ok(!is_member,
"Expected SeChangeNotifyPrivilege not to be enabled\n");
5529 ok(!is_member,
"Expected not to find privilege\n");
5547 ret = pCreateRestrictedToken(
token, 0, 1, &sattr, 0,
NULL, 0,
NULL, &r_token);
5553 ret = pCheckTokenMembership(r_token, primary_group->
PrimaryGroup, &is_member);
5555 ok(!is_member,
"not a member\n");
5565 "Expected same primary group\n");
5584 ok(
ret,
"security descriptor is not valid\n");
5588 acl = (
void *)0xdeadbeef;
5593 ok(present == 1,
"acl is not present\n");
5595 ok(acl != (
void *)0xdeadbeef && acl !=
NULL,
"acl pointer is not set\n");
5596 ok(defaulted == 0,
"defaulted is set to TRUE\n");
5599 sid = (
void *)0xdeadbeef;
5604 ok(
sid != (
void *)0xdeadbeef &&
sid !=
NULL,
"sid pointer is not set\n");
5605 ok(defaulted == 0,
"defaulted is set to TRUE\n");
5608 sid = (
void *)0xdeadbeef;
5613 ok(
sid != (
void *)0xdeadbeef &&
sid !=
NULL,
"sid pointer is not set\n");
5614 ok(defaulted == 0,
"defaulted is set to TRUE\n");
5627 priv_set_len =
sizeof(priv_set);
5628 granted = 0xdeadbeef;
5635 ok(granted ==
mapping->GenericAll,
"expected all access %#x, got %#x\n",
mapping->GenericAll, granted);
5637 priv_set_len =
sizeof(priv_set);
5638 granted = 0xdeadbeef;
5645 ok(granted == 0 ||
broken(granted ==
mapping->GenericRead) ,
"expected 0, got %#x\n", granted);
5647 priv_set_len =
sizeof(priv_set);
5648 granted = 0xdeadbeef;
5655 ok(granted == 0,
"expected 0, got %#x\n", granted);
5657 priv_set_len =
sizeof(priv_set);
5658 granted = 0xdeadbeef;
5665 ok(granted ==
mapping->GenericRead,
"expected read access %#x, got %#x\n",
mapping->GenericRead, granted);
5667 priv_set_len =
sizeof(priv_set);
5668 granted = 0xdeadbeef;
5675 ok(granted ==
mapping->GenericWrite,
"expected write access %#x, got %#x\n",
mapping->GenericWrite, granted);
5677 priv_set_len =
sizeof(priv_set);
5678 granted = 0xdeadbeef;
5685 ok(granted ==
mapping->GenericExecute,
"expected execute access %#x, got %#x\n",
mapping->GenericExecute, granted);
5695 if (!pNtQueryObject)
return 0;
5700 return info.GrantedAccess;
5713 int generic, mapped;
5725 ok(!
mutex,
"mutex should not exist\n");
5735 for (
i = 0;
i <
sizeof(
map)/
sizeof(
map[0]);
i++)
5750 ok(!
dup,
"OpenMutex should fail\n");
5770 int generic, mapped;
5782 ok(!
event,
"event should not exist\n");
5792 for (
i = 0;
i <
sizeof(
map)/
sizeof(
map[0]);
i++)
5807 ok(!
dup,
"OpenEvent should fail\n");
5827 int generic, mapped;
5839 ok(!
sem,
"semaphore should not exist\n");
5849 for (
i = 0;
i <
sizeof(
map)/
sizeof(
map[0]);
i++)
5867#define WINE_TEST_PIPE "\\\\.\\pipe\\WineTestPipe"
5878 int todo,
generic, mapped;
5891 } creation_access[] =
5902 for (
i = 0;
i <
sizeof(creation_access)/
sizeof(creation_access[0]);
i++)
5912 "CreateNamedPipeA(0x%x) pipe expected access 0x%x (got 0x%x)\n",
5913 creation_access[
i].open_mode, creation_access[
i].
access,
access);
5932 for (
i = 0;
i <
sizeof(
map)/
sizeof(
map[0]);
i++)
5957 for (
i = 0;
i <
sizeof(
map)/
sizeof(
map[0]);
i++)
5981 int generic, mapped;
6005 for (
i = 0;
i <
sizeof(
map)/
sizeof(
map[0]);
i++)
6031 ok(!
ret,
"ReadFile should fail\n");
6048 ok(!
ret,
"ReadFile should fail\n");
6063 for (
i = 0;
i <
sizeof(
map)/
sizeof(
map[0]);
i++)
6107 int generic, mapped;
6147 for (
i = 0;
i <
sizeof(prot_map)/
sizeof(prot_map[0]);
i++)
6149 if (
map[
i].open_only)
continue;
6153 if (prot_map[
i].mapped)
6160 win_skip(
"CreateFileMapping doesn't support PAGE_EXECUTE protection\n");
6168 ok(!
mapping,
"CreateFileMapping(%04x) should fail\n", prot_map[
i].prot);
6174 ok(
access == prot_map[
i].mapped,
"%d: expected %#x, got %#x\n",
i, prot_map[
i].mapped,
access);
6184 win_skip(
"CreateFileMapping doesn't support PAGE_EXECUTE protection\n");
6193 "expected STANDARD_RIGHTS_REQUIRED | SECTION_QUERY | SECTION_MAP_READ | SECTION_MAP_WRITE | SECTION_MAP_EXECUTE, got %#x\n",
access);
6195 for (
i = 0;
i <
sizeof(
map)/
sizeof(
map[0]);
i++)
6197 if (
map[
i].open_only)
continue;
6215 "Wine Test Open Mapping");
6216 ok(created_mapping !=
NULL,
"CreateFileMapping failed with error %u\n",
GetLastError());
6218 for (
i = 0;
i <
sizeof(
map)/
sizeof(
map[0]);
i++)
6225 ok(
access ==
map[
i].mapped,
"%d: unexpected access flags %#x, expected %#x\n",
6239 int generic, mapped;
6256 for (
i = 0;
i <
sizeof(
map)/
sizeof(
map[0]);
i++)
6271 "%d: expected %#x, got %#x\n",
i,
map[
i].mapped,
access);
6278 "%d: expected %#x, got %#x\n",
i,
map[
i].mapped,
access);
6282 "%d: expected %#x, got %#x\n",
i,
map[
i].mapped,
access);
6299 "expected THREAD_QUERY_INFORMATION|THREAD_QUERY_LIMITED_INFORMATION, got %#x\n",
access);
6312 char cmdline[] =
"winver.exe";
6315 int generic, mapped;
6326 memset(&sti, 0,
sizeof(sti));
6327 sti.
cb =
sizeof(sti);
6338 for (
i = 0;
i <
sizeof(
map)/
sizeof(
map[0]);
i++)
6350 "%d: expected %#x, got %#x\n",
i,
map[
i].mapped,
access);
6357 "%d: expected %#x, got %#x\n",
i,
map[
i].mapped,
access);
6361 "%d: expected %#x, got %#x\n",
i,
map[
i].mapped,
access);
6365 "%d: expected %#x, got %#x\n",
i,
map[
i].mapped,
access);
6382 "expected PROCESS_QUERY_INFORMATION|PROCESS_QUERY_LIMITED_INFORMATION, got %#x\n",
access);
6400 ok(needed ==
sizeof(
type),
"GetTokenInformation should return required buffer length\n");
6410 ok(needed ==
sizeof(sil),
"GetTokenInformation should return required buffer length\n");
6413 needed = 0xdeadbeef;
6416 ok(!
ret,
"GetTokenInformation should fail\n");
6418 ok(needed != 0xdeadbeef,
"GetTokenInformation should return required buffer length\n");
6421 needed = 0xdeadbeef;
6424 ok(!
ret,
"GetTokenInformation should fail\n");
6426 ok(needed != 0xdeadbeef,
"GetTokenInformation should return required buffer length\n");
6427 ok(needed >
sizeof(
TOKEN_OWNER),
"GetTokenInformation returned empty token owner\n");
6429 needed = 0xdeadbeef;
6432 ok(!
ret,
"GetTokenInformation should fail\n");
6434 ok(needed != 0xdeadbeef,
"GetTokenInformation should return required buffer length\n");
6435 ok(needed >
sizeof(
TOKEN_PRIMARY_GROUP),
"GetTokenInformation returned empty token primary group\n");
6449 ok(token_type ==
TokenPrimary,
"expected TokenPrimary, got %d\n", token_type);
6450 ok(!
ret,
"access token should not be an impersonation token\n");
6456 ok(
ret,
"access token should be a valid impersonation token\n");
6495 win_skip(
"TokenIntegrityLevel not supported\n");
6521 BOOL ret, defaulted, present, found;
6534 sa.lpSecurityDescriptor =
sd;
6547 owner = (
void *)0xdeadbeef;
6551 ok( owner != (
void *)0xdeadbeef,
"owner not set\n" );
6552 ok( !defaulted,
"owner defaulted\n" );
6554 dacl = (
void *)0xdeadbeef;
6559 ok( present,
"dacl not present\n" );
6560 ok(
dacl != (
void *)0xdeadbeef,
"dacl not set\n" );
6561 ok( !defaulted,
"dacl defaulted\n" );
6565 while (pGetAce(
dacl,
index++, (
void **)&ace ))
6569 ok( found,
"owner sid not found in dacl\n" );
6593 tp.PrivilegeCount = 1;
6594 tp.Privileges[0].Luid = luid;
6600 ok(
len == 0xdeadbeef,
"got length %d\n",
len);
6603 tp.PrivilegeCount = 1;
6604 tp.Privileges[0].Luid = luid;
6605 tp.Privileges[0].Attributes = 0;
6616 char acl_buf[1024], ace_buf[256];
6621 memset(ace, 0,
sizeof(ace_buf));
6653 ok(!
ret,
"AddAce succeeded\n");
6666 BOOL defaulted, present,
ret, found, found2;
6669 char buffer_acl[256];
6670 ACL *acl = (
ACL *)&buffer_acl;
6677 if (!pAddMandatoryAce)
6679 win_skip(
"AddMandatoryAce not supported, skipping test\n");
6686 sa.nLength =
sizeof(
sa);
6687 sa.lpSecurityDescriptor =
sd;
6695 "Unexpected GetKernelObjectSecurity return value %u, error %u\n",
ret,
GetLastError());
6701 sacl = (
void *)0xdeadbeef;
6705 ok(!present,
"SACL is present\n");
6706 ok(sacl == (
void *)0xdeadbeef,
"SACL is set\n");
6711 memset(buffer_acl, 0,
sizeof(buffer_acl));
6717 ok(!
ret,
"AddMandatoryAce succeeded\n");
6719 "Expected ERROR_INVALID_PARAMETER got %u\n",
GetLastError());
6726 while (pGetAce(acl,
index++, (
void **)&ace))
6731 "Expected mask SYSTEM_MANDATORY_LABEL_NO_WRITE_UP, got %x\n", ace->
Mask);
6735 ok(found,
"Could not find mandatory label ace\n");
6745 "Unexpected GetKernelObjectSecurity return value %u, error %u\n",
ret,
GetLastError());
6751 sacl = (
void *)0xdeadbeef;
6756 ok(present,
"SACL not present\n");
6757 ok(sacl != (
void *)0xdeadbeef,
"SACL not set\n");
6758 ok(!defaulted,
"SACL defaulted\n");
6761 ok(acl_size_info.
AceCount == 1,
"SACL contains an unexpected ACE count %u\n", acl_size_info.
AceCount);
6763 ret = pGetAce(sacl, 0, (
void **)&ace);
6780 "Unexpected GetKernelObjectSecurity return value %u, error %u\n",
ret,
GetLastError());
6786 sacl = (
void *)0xdeadbeef;
6791 ok(present,
"SACL not present\n");
6792 ok(sacl != (
void *)0xdeadbeef,
"SACL not set\n");
6794 ok(!defaulted,
"SACL defaulted\n");
6797 found = found2 =
FALSE;
6798 while (pGetAce(sacl,
index++, (
void **)&ace))
6807 "Expected SYSTEM_MANDATORY_LABEL_NO_WRITE_UP as mask, got %#x\n", ace->
Mask);
6814 "Expected SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP as mask, got %#x\n", ace->
Mask);
6818 ok(found,
"Could not find low mandatory label\n");
6819 ok(found2,
"Could not find medium mandatory label\n");
6831 "Unexpected GetKernelObjectSecurity return value %d, error %u\n",
ret,
GetLastError());
6837 sacl = (
void *)0xdeadbeef;
6842 ok(present,
"SACL not present\n");
6843 ok(sacl && sacl != (
void *)0xdeadbeef,
"SACL not set\n");
6844 ok(!defaulted,
"SACL defaulted\n");
6863 "Unexpected GetKernelObjectSecurity return value %d, error %u\n",
ret,
GetLastError());
6869 sacl = (
void *)0xdeadbeef;
6874 ok(present,
"SACL not present\n");
6875 ok(sacl != (
void *)0xdeadbeef,
"SACL not set\n");
6877 ok(!defaulted,
"SACL defaulted\n");
6884 ret =
AllocateAndInitializeSid(&sia_world, 1,
SECURITY_WORLD_RID, 0, 0, 0, 0, 0, 0, 0, (
void **)&everyone);
6898 "Unexpected GetKernelObjectSecurity return value %d, error %u\n",
ret,
GetLastError());
6904 sacl = (
void *)0xdeadbeef;
6909 ok(present,
"SACL not present\n");
6910 ok(sacl && sacl != (
void *)0xdeadbeef,
"SACL not set\n");
6911 ok(!defaulted,
"SACL defaulted\n");
6921 static const WCHAR testkeyW[] =
6922 {
'S',
'O',
'F',
'T',
'W',
'A',
'R',
'E',
'\\',
'W',
'i',
'n',
'e',
'\\',
'S',
'A',
'C',
'L',
't',
'e',
's',
't',0};
6944 skip(
"unprivileged user\n" );
6961 win_skip(
"privilege not held\n" );
7024 PSID domain_sid = (
PSID *)&buffer1;
7025 PSID domain_sid2 = (
PSID *)&buffer2;
7032 if (!pGetWindowsAccountDomainSid)
7034 win_skip(
"GetWindowsAccountDomainSid not available\n");
7045 win_skip(
"Failed to get current user token\n");
7051 "GetTokenInformation(TokenUser) failed with error %d\n",
GetLastError());
7054 ok(bret,
"GetTokenInformation(TokenUser) failed with error %d\n",
GetLastError());
7059 bret = pGetWindowsAccountDomainSid(0, 0, 0);
7060 ok(!bret,
"GetWindowsAccountDomainSid succeeded\n");
7064 bret = pGetWindowsAccountDomainSid(user_sid, 0, 0);
7065 ok(!bret,
"GetWindowsAccountDomainSid succeeded\n");
7070 bret = pGetWindowsAccountDomainSid(user_sid, 0, &sid_size);
7071 ok(!bret,
"GetWindowsAccountDomainSid succeeded\n");
7076 bret = pGetWindowsAccountDomainSid(user_sid, domain_sid, 0);
7077 ok(!bret,
"GetWindowsAccountDomainSid succeeded\n");
7082 bret = pGetWindowsAccountDomainSid(user_sid, domain_sid, &sid_size);
7083 ok(!bret,
"GetWindowsAccountDomainSid succeeded\n");
7088 bret = pGetWindowsAccountDomainSid(user_sid, domain_sid, &sid_size);
7089 ok(bret,
"GetWindowsAccountDomainSid failed with error %d\n",
GetLastError());
7092 for (
i = 0;
i < 4;
i++)
7094 ok(
EqualSid(domain_sid, domain_sid2),
"unexpected domain sid %s != %s\n",
7107 if (!pGetSidIdentifierAuthority)
7109 win_skip(
"GetSidIdentifierAuthority not available\n");
7115 ok(!
ret,
"expected FALSE, got %u\n",
ret);
7119 ok(
id !=
NULL,
"got NULL pointer as identifier authority\n");
7124 ok(
id !=
NULL,
"got NULL pointer as identifier authority\n");
7137 memset(&statistics1, 0x11,
sizeof(statistics1));
7144 memset(&statistics2, 0x22,
sizeof(statistics2));
7146 &statistics2,
sizeof(statistics2), &retlen);
7148 "GetTokenInformation failed with %u\n",
GetLastError());
7150 ok(!
memcmp(&statistics1, &statistics2,
sizeof(statistics1)),
"Token statistics do not match\n");
7152 win_skip(
"CurrentProcessToken not supported, skipping test\n");
7156 memset(&statistics2, 0x22,
sizeof(statistics2));
7158 &statistics2,
sizeof(statistics2), &retlen);
7160 "GetTokenInformation failed with %u\n",
GetLastError());
7162 ok(!
memcmp(&statistics1, &statistics2,
sizeof(statistics1)),
"Token statistics do not match\n");
7164 win_skip(
"CurrentThreadEffectiveToken not supported, skipping test\n");
7168 ok(!
ret,
"OpenThreadToken should have failed\n");
7174 &statistics2,
sizeof(statistics2), &retlen);
7185 ACL *acl = (
ACL *)&buffer_acl;
7192 if (!pCreateEventExA)
7194 win_skip(
"CreateEventExA is not available\n");
7200 memset(buffer_acl, 0,
sizeof(buffer_acl));
7207 sa.lpSecurityDescriptor =
sd;
7238 "Unexpected GetKernelObjectSecurity return value %d, error %u\n",
ret,
GetLastError());
7248 "Unexpected security descriptor control %#x\n",
control);
7249 ok(revision == 1,
"Unexpected security descriptor revision %u\n", revision);
7251 sid = (
void *)0xdeadbeef;
7255 ok(!
sid,
"Owner present\n");
7256 ok(!defaulted,
"Owner defaulted\n");
7258 sid = (
void *)0xdeadbeef;
7262 ok(!
sid,
"Group present\n");
7263 ok(!defaulted,
"Group defaulted\n");
7267 ok(present ||
broken(!present) ,
"No SACL in the security descriptor\n");
7268 ok(sacl ||
broken(!sacl) ,
"NULL SACL in the security descriptor\n");
7272 ok(!defaulted,
"SACL defaulted\n");
7273 ok(sacl->
AceCount == 1,
"SACL contains an unexpected ACE count %u\n", sacl->
AceCount);
7275 ret = pGetAce(sacl, 0, (
void **)&ace);
7279 "Unexpected ACE type %#x\n", ace->Header.AceType);
7280 ok(!ace->Header.AceFlags,
"Unexpected ACE flags %#x\n", ace->Header.AceFlags);
7281 ok(ace->Header.AceSize,
"Unexpected ACE size %u\n", ace->Header.AceSize);
7284 sid = (
SID *)&ace->SidStart;
7309 ACL *acl = (
ACL *)&buffer_acl, *acl2, *acl_child, *sacl;
7310 BOOL defaulted, present,
ret, found;
7311 HANDLE token, token2, token3, token4, token5, token6;
7314 BYTE buffer_integrity[64];
7322 if (!pDuplicateTokenEx || !pConvertStringSidToSidA || !pAddAccessAllowedAceEx || !pGetAce
7323 || !pSetEntriesInAclW)
7325 win_skip(
"Some functions not available\n");
7336 memset(buffer_acl, 0,
sizeof(buffer_acl));
7340 ret = pConvertStringSidToSidA(
"S-1-5-6", &psid);
7350 sa.lpSecurityDescriptor =
sd;
7358 "Unexpected GetKernelObjectSecurity return value %d, error %u\n",
ret,
GetLastError());
7364 acl2 = (
void *)0xdeadbeef;
7369 ok(present,
"acl2 not present\n");
7370 ok(acl2 != (
void *)0xdeadbeef,
"acl2 not set\n");
7371 ok(acl2->AceCount == 1,
"Expected 1 ACE, got %d\n", acl2->AceCount);
7372 ok(!defaulted,
"acl2 defaulted\n");
7374 ret = pGetAce(acl2, 0, (
void **)&ace);
7379 "Expected NO_PROPAGATE_INHERIT_ACE as flags, got %x\n", ace->
Header.
AceFlags);
7390 "Unexpected GetKernelObjectSecurity return value %d, error %u\n",
ret,
GetLastError());
7396 acl2 = (
void *)0xdeadbeef;
7401 ok(present,
"DACL not present\n");
7405 ok(acl2 != (
void *)0xdeadbeef,
"DACL not set\n");
7406 ok(!defaulted,
"DACL defaulted\n");
7410 while (pGetAce(acl2,
index++, (
void **)&ace))
7415 ok(!found,
"Access allowed ACE was inherited\n");
7424 "Unexpected GetKernelObjectSecurity return value %d, error %u\n",
ret,
GetLastError());
7430 acl2 = (
void *)0xdeadbeef;
7435 ok(present,
"DACL not present\n");
7436 ok(acl2 != (
void *)0xdeadbeef,
"DACL not set\n");
7437 ok(!defaulted,
"DACL defaulted\n");
7448 retd = pSetEntriesInAclW(1, &exp_access, acl2, &acl_child);
7462 if (pAddMandatoryAce)
7464 memset(buffer_integrity, 0,
sizeof(buffer_integrity));
7469 "Expected medium or high integrity level\n");
7486 "Failed to get process id of shell window: %u\n",
GetLastError());
7494 memset(buffer_integrity, 0,
sizeof(buffer_integrity));
7503 "Unexpected GetKernelObjectSecurity return value %u, error %u\n",
ret,
GetLastError());
7512 ok(present,
"No SACL in the security descriptor\n");
7513 ok(sacl !=
NULL,
"NULL SACL in the security descriptor\n");
7517 ret = pGetAce(sacl, 0, (
void **)&ace);
7520 "Unexpected ACE type %#x\n", ace->Header.AceType);
7522 "Expected medium integrity level\n");
7534 ret =
CreateProcessAsUserA(token4,
NULL,
buffer,
NULL,
NULL,
FALSE, 0,
NULL,
NULL, &
startup, &
info);
7536 "CreateProcess failed with error %u\n",
GetLastError());
7544 win_skip(
"Skipping test for creating process with medium level token\n");
7556 memset(buffer_integrity, 0,
sizeof(buffer_integrity));
7565 "Unexpected GetKernelObjectSecurity return value %u, error %u\n",
ret,
GetLastError());
7574 ok(present,
"No SACL in the security descriptor\n");
7575 ok(sacl !=
NULL,
"NULL SACL in the security descriptor\n");
7579 ret = pGetAce(sacl, 0, (
void **)&ace);
7582 "Unexpected ACE type %#x\n", ace->Header.AceType);
7584 "Expected medium integrity level\n");
7593 ret =
CreateProcessAsUserA(token6,
NULL,
buffer,
NULL,
NULL,
FALSE, 0,
NULL,
NULL, &
startup, &
info);
7606 sa.lpSecurityDescriptor =
sd;
7615 "Unexpected GetKernelObjectSecurity return value %u, error %u\n",
ret,
GetLastError());
7624 ok(present,
"No SACL in the security descriptor\n");
7625 ok(sacl !=
NULL,
"NULL SACL in the security descriptor\n");
7629 ret = pGetAce(sacl, 0, (
void **)&ace);
7632 "Unexpected ACE type %#x\n", ace->Header.AceType);
7634 "Expected high integrity level\n");
7641 skip(
"Skipping test, running without admin rights\n");
7660 memset(buffer_integrity, 0,
sizeof(buffer_integrity));
7665 "Expected medium or high integrity level\n");
7671 memset(buffer_integrity, 0,
sizeof(buffer_integrity));
7676 "Expected medium or high integrity level\n");
7681 "Unexpected GetKernelObjectSecurity return value %u, error %u\n",
ret,
GetLastError());
7689 ok(present,
"No SACL in the security descriptor\n");
7690 ok(sacl !=
NULL,
"NULL SACL in the security descriptor\n");
7694 ret = pGetAce(sacl, 0, (
void **)&ace);
7697 "Unexpected ACE type %#x\n", ace->Header.AceType);
7699 "Low integrity level should not have been inherited\n");
7708 memset(buffer_integrity, 0,
sizeof(buffer_integrity));
7713 "Expected medium or high integrity level\n");
7718 "Unexpected GetKernelObjectSecurity return value %u, error %u\n",
ret,
GetLastError());
7727 ok(present,
"No SACL in the security descriptor\n");
7728 ok(sacl !=
NULL,
"NULL SACL in the security descriptor\n");
7732 ret = pGetAce(sacl, 0, (
void **)&ace);
7735 "Unexpected ACE type %#x\n", ace->Header.AceType);
7737 "Low integrity level should not have been inherited\n");
7744 win_skip(
"SYSTEM_MANDATORY_LABEL not supported\n");
7781 ret = pConvertStringSidToSidA(
"S-1-5-6", &psid);
7789 "Unexpected GetKernelObjectSecurity return value %d, error %u\n",
ret,
GetLastError());
7800 ok(present,
"DACL not present\n");
7801 ok(acl && acl != (
void *)0xdeadbeef,
"Got invalid DACL\n");
7802 ok(!defaulted,
"DACL defaulted\n");
7804 ok(acl->
AceCount,
"Expected at least one ACE\n");
7807 ok(pGetAce(acl,
i, (
void **)&acc_ace),
"GetAce failed with error %u\n",
GetLastError());
7809 "ACE inherited from the parent\n");
7815 if (!pAddMandatoryAce)
7817 win_skip(
"SYSTEM_MANDATORY_LABEL not supported\n");
7823 "Unexpected GetKernelObjectSecurity return value %d, error %u\n",
ret,
GetLastError());
7834 ok(present,
"SACL not present\n");
7835 ok(acl && acl != (
void *)0xdeadbeef,
"Got invalid SACL\n");
7836 ok(!defaulted,
"SACL defaulted\n");
7837 ok(acl->
AceCount == 1,
"Expected exactly one ACE\n");
7838 ret = pGetAce(acl, 0, (
void **)&ace_label);
7843 "Low integrity level should not have been inherited\n");
7855 BYTE buffer_integrity[64];
7861 if (!pAddMandatoryAce)
7863 win_skip(
"SYSTEM_MANDATORY_LABEL not supported\n");
7872 "Unexpected GetKernelObjectSecurity return value %d, error %u\n",
ret,
GetLastError());
7883 ok(present,
"SACL not present\n");
7884 ok(acl && acl != (
void *)0xdeadbeef,
"Got invalid SACL\n");
7885 ok(!defaulted,
"SACL defaulted\n");
7886 ok(acl->
AceCount == 1,
"Expected exactly one ACE\n");
7887 ret = pGetAce(acl, 0, (
void **)&ace_label);
7892 "Expected high integrity level\n");
7894 memset(buffer_integrity, 0,
sizeof(buffer_integrity));
7910 BYTE buffer_integrity[64];
7916 if (!pAddMandatoryAce)
7918 win_skip(
"SYSTEM_MANDATORY_LABEL not supported\n");
7927 "Unexpected GetKernelObjectSecurity return value %d, error %u\n",
ret,
GetLastError());
7938 ok(present,
"SACL not present\n");
7939 ok(acl && acl != (
void *)0xdeadbeef,
"Got invalid SACL\n");
7940 ok(!defaulted,
"SACL defaulted\n");
7941 ok(acl->
AceCount == 1,
"Expected exactly one ACE\n");
7942 ret = pGetAce(acl, 0, (
void **)&ace_label);
7947 "Expected medium integrity level\n");
7949 memset(buffer_integrity, 0,
sizeof(buffer_integrity));
7960 static const WCHAR wszCurrentUser[] = {
'C',
'U',
'R',
'R',
'E',
'N',
'T',
'_',
'U',
'S',
'E',
'R',
'\0'};
7970 if (!pGetExplicitEntriesFromAclW)
7972 win_skip(
"GetExplicitEntriesFromAclW is not available\n");
7976 if (!pSetEntriesInAclW)
7978 win_skip(
"SetEntriesInAclW is not available\n");
7986 win_skip(
"ACLs not implemented - skipping tests\n");
7992 res =
AllocateAndInitializeSid(&SIDAuthWorld, 1,
SECURITY_WORLD_RID, 0, 0, 0, 0, 0, 0, 0, &everyone_sid);
8003 res = pGetExplicitEntriesFromAclW(old_acl, &
count, &access2);
8005 ok(
count == 1,
"Expected count == 1, got %d\n",
count);
8006 ok(access2[0].grfAccessMode ==
GRANT_ACCESS,
"Expected GRANT_ACCESS, got %d\n", access2[0].grfAccessMode);
8007 ok(access2[0].grfAccessPermissions ==
KEY_READ,
"Expected KEY_READ, got %d\n", access2[0].grfAccessPermissions);
8009 ok(access2[0].grfInheritance ==
NO_INHERITANCE,
"Expected NO_INHERITANCE, got %x\n", access2[0].grfInheritance);
8010 ok(
EqualSid(access2[0].Trustee.ptstrName, users_sid),
"Expected equal SIDs\n");
8021 access.Trustee.ptstrName = everyone_sid;
8022 res = pSetEntriesInAclW(1, &
access, old_acl, &new_acl);
8024 ok(new_acl !=
NULL,
"returned acl was NULL\n");
8027 res = pGetExplicitEntriesFromAclW(new_acl, &
count, &access2);
8029 ok(
count == 2,
"Expected count == 2, got %d\n",
count);
8030 ok(access2[0].grfAccessMode ==
GRANT_ACCESS,
"Expected GRANT_ACCESS, got %d\n", access2[0].grfAccessMode);
8031 ok(access2[0].grfAccessPermissions ==
KEY_WRITE,
"Expected KEY_WRITE, got %d\n", access2[0].grfAccessPermissions);
8033 "Expected TRUSTEE_IS_UNKNOWN trustee type, got %d\n", access2[0].
Trustee.
TrusteeType);
8035 ok(access2[0].grfInheritance ==
NO_INHERITANCE,
"Expected NO_INHERITANCE, got %x\n", access2[0].grfInheritance);
8036 ok(
EqualSid(access2[0].Trustee.ptstrName, everyone_sid),
"Expected equal SIDs\n");
8041 res = pSetEntriesInAclW(1, &
access, old_acl, &new_acl);
8043 ok(new_acl !=
NULL,
"returned acl was NULL\n");
8046 res = pGetExplicitEntriesFromAclW(new_acl, &
count, &access2);
8048 ok(
count == 2,
"Expected count == 2, got %d\n",
count);
8049 ok(access2[0].grfAccessMode ==
GRANT_ACCESS,
"Expected GRANT_ACCESS, got %d\n", access2[0].grfAccessMode);
8050 ok(access2[0].grfAccessPermissions ==
KEY_WRITE,
"Expected KEY_WRITE, got %d\n", access2[0].grfAccessPermissions);
8052 "Expected TRUSTEE_IS_UNKNOWN trustee type, got %d\n", access2[0].
Trustee.
TrusteeType);
8054 ok(access2[0].grfInheritance ==
NO_INHERITANCE,
"Expected NO_INHERITANCE, got %x\n", access2[0].grfInheritance);
8055 ok(
EqualSid(access2[0].Trustee.ptstrName, everyone_sid),
"Expected equal SIDs\n");
8061 res = pSetEntriesInAclW(1, &
access, old_acl, &new_acl);
8063 ok(new_acl !=
NULL,
"returned acl was NULL\n");
8066 res = pGetExplicitEntriesFromAclW(new_acl, &
count, &access2);
8068 ok(
count == 2,
"Expected count == 2, got %d\n",
count);
8069 ok(access2[0].grfAccessMode ==
GRANT_ACCESS,
"Expected GRANT_ACCESS, got %d\n", access2[0].grfAccessMode);
8070 ok(access2[0].grfAccessPermissions ==
KEY_WRITE,
"Expected KEY_WRITE, got %d\n", access2[0].grfAccessPermissions);
8072 "Expected TRUSTEE_IS_UNKNOWN trustee type, got %d\n", access2[0].
Trustee.
TrusteeType);
8074 ok(access2[0].grfInheritance ==
NO_INHERITANCE,
"Expected NO_INHERITANCE, got %x\n", access2[0].grfInheritance);
8080 access.Trustee.ptstrName = users_sid;
8081 res = pSetEntriesInAclW(1, &
access, old_acl, &new_acl);
8083 ok(new_acl !=
NULL,
"returned acl was NULL\n");
8085 access2 = (
void *)0xdeadbeef;
8086 res = pGetExplicitEntriesFromAclW(new_acl, &
count, &access2);
8088 ok(
count == 0,
"Expected count == 0, got %d\n",
count);
8089 ok(access2 ==
NULL,
"access2 was not NULL\n");
8108 buf_size =
sizeof(
buf);
8117 ok(new_sd !=
NULL,
"expected new_sd != NULL\n");
8118 ok(new_sd_size ==
sizeof(old_sd),
"expected new_sd_size == sizeof(old_sd), got %u\n", new_sd_size);
8121 new_sd = (
void *)0xdeadbeef;
8124 ok(new_sd == (
void *)0xdeadbeef,
"expected new_sd == 0xdeadbeef, got %p\n", new_sd);
8130 ok(new_sd !=
NULL,
"expected new_sd != NULL\n");
8131 ok(new_sd_size ==
sizeof(old_sd),
"expected new_sd_size == sizeof(old_sd), got %u\n", new_sd_size);
8144 else if (!
strcmp(
myARGV[2],
"test_token_sd_restricted"))
@ TRUSTEE_IS_OBJECTS_AND_SID
@ TRUSTEE_IS_OBJECTS_AND_NAME
@ TRUSTEE_IS_WELL_KNOWN_GROUP
enum _SE_OBJECT_TYPE SE_OBJECT_TYPE
int strcmp(const char *String1, const char *String2)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
ACPI_SIZE strlen(const char *String)
static void startup(void)
static unsigned char bytes[4]
static struct sockaddr_in sa
static const WCHAR nameW[]
#define FILE_DIRECTORY_FILE
#define FILE_DELETE_ON_CLOSE
void shell(int argc, const char *argv[])
void account(int argc, const char *argv[])
void user(int argc, const char *argv[])
#define RegCloseKey(hKey)
#define ERROR_INSUFFICIENT_BUFFER
#define ERROR_INVALID_FUNCTION
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessAsUserA(_In_opt_ HANDLE hToken, _In_opt_ LPCSTR lpApplicationName, _Inout_opt_ LPSTR lpCommandLine, _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, _In_ BOOL bInheritHandles, _In_ DWORD dwCreationFlags, _In_opt_ LPVOID lpEnvironment, _In_opt_ LPCSTR lpCurrentDirectory, _In_ LPSTARTUPINFOA lpStartupInfo, _Out_ LPPROCESS_INFORMATION lpProcessInformation)
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
LONG WINAPI RegOpenKeyExA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey, _In_ DWORD ulOptions, _In_ REGSAM samDesired, _Out_ PHKEY phkResult)
LONG WINAPI RegDeleteKeyW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey)
BOOL WINAPI LookupPrivilegeValueA(LPCSTR lpSystemName, LPCSTR lpName, PLUID lpLuid)
BOOL WINAPI LookupAccountSidA(LPCSTR lpSystemName, PSID lpSid, LPSTR lpName, LPDWORD cchName, LPSTR lpReferencedDomainName, LPDWORD cchReferencedDomainName, PSID_NAME_USE peUse)
BOOL WINAPI GetUserNameW(LPWSTR lpszName, LPDWORD lpSize)
BOOL WINAPI GetPrivateObjectSecurity(IN PSECURITY_DESCRIPTOR ObjectDescriptor, IN SECURITY_INFORMATION SecurityInformation, OUT PSECURITY_DESCRIPTOR ResultantDescriptor OPTIONAL, IN DWORD DescriptorLength, OUT PDWORD ReturnLength)
DWORD WINAPI GetSecurityInfo(HANDLE handle, SE_OBJECT_TYPE ObjectType, SECURITY_INFORMATION SecurityInfo, PSID *ppsidOwner, PSID *ppsidGroup, PACL *ppDacl, PACL *ppSacl, PSECURITY_DESCRIPTOR *ppSecurityDescriptor)
BOOL WINAPI GetUserNameA(LPSTR lpszName, LPDWORD lpSize)
BOOL WINAPI ImpersonateLoggedOnUser(HANDLE hToken)
BOOL WINAPI LookupAccountSidW(LPCWSTR pSystemName, PSID pSid, LPWSTR pAccountName, LPDWORD pdwAccountName, LPWSTR pDomainName, LPDWORD pdwDomainName, PSID_NAME_USE peUse)
BOOL WINAPI AdjustTokenPrivileges(HANDLE TokenHandle, BOOL DisableAllPrivileges, PTOKEN_PRIVILEGES NewState, DWORD BufferLength, PTOKEN_PRIVILEGES PreviousState, PDWORD ReturnLength)
BOOL WINAPI GetTokenInformation(HANDLE TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, LPVOID TokenInformation, DWORD TokenInformationLength, PDWORD ReturnLength)
BOOL WINAPI LookupAccountNameA(LPCSTR SystemName, LPCSTR AccountName, PSID Sid, LPDWORD SidLength, LPSTR ReferencedDomainName, LPDWORD hReferencedDomainNameLength, PSID_NAME_USE SidNameUse)
BOOL WINAPI PrivilegeCheck(HANDLE ClientToken, PPRIVILEGE_SET RequiredPrivileges, LPBOOL pfResult)
static const ACEFLAG AceFlags[]
BOOL WINAPI OpenProcessToken(HANDLE ProcessHandle, DWORD DesiredAccess, PHANDLE TokenHandle)
BOOL WINAPI CreateRestrictedToken(_In_ HANDLE ExistingTokenHandle, _In_ DWORD Flags, _In_ DWORD DisableSidCount, _In_reads_opt_(DisableSidCount) PSID_AND_ATTRIBUTES SidsToDisable, _In_ DWORD DeletePrivilegeCount, _In_reads_opt_(DeletePrivilegeCount) PLUID_AND_ATTRIBUTES PrivilegesToDelete, _In_ DWORD RestrictedSidCount, _In_reads_opt_(RestrictedSidCount) PSID_AND_ATTRIBUTES SidsToRestrict, _Outptr_ PHANDLE NewTokenHandle)
Creates a filtered token that is a restricted one of the regular access token. A restricted token can...
BOOL WINAPI DuplicateToken(IN HANDLE ExistingTokenHandle, IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, OUT PHANDLE DuplicateTokenHandle)
BOOL WINAPI SetTokenInformation(HANDLE TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, LPVOID TokenInformation, DWORD TokenInformationLength)
BOOL WINAPI InitializeSid(PSID Sid, PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount)
BOOL WINAPI EqualPrefixSid(PSID pSid1, PSID pSid2)
BOOL WINAPI ImpersonateSelf(SECURITY_IMPERSONATION_LEVEL ImpersonationLevel)
BOOL WINAPI AddAce(PACL pAcl, DWORD dwAceRevision, DWORD dwStartingAceIndex, LPVOID pAceList, DWORD nAceListLength)
BOOL WINAPI MakeAbsoluteSD(PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor, PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor, LPDWORD lpdwAbsoluteSecurityDescriptorSize, PACL pDacl, LPDWORD lpdwDaclSize, PACL pSacl, LPDWORD lpdwSaclSize, PSID pOwner, LPDWORD lpdwOwnerSize, PSID pPrimaryGroup, LPDWORD lpdwPrimaryGroupSize)
PDWORD WINAPI GetSidSubAuthority(PSID pSid, DWORD nSubAuthority)
BOOL WINAPI SetThreadToken(IN PHANDLE ThreadHandle OPTIONAL, IN HANDLE TokenHandle)
BOOL WINAPI AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount, DWORD nSubAuthority0, DWORD nSubAuthority1, DWORD nSubAuthority2, DWORD nSubAuthority3, DWORD nSubAuthority4, DWORD nSubAuthority5, DWORD nSubAuthority6, DWORD nSubAuthority7, PSID *pSid)
DWORD WINAPI GetSidLengthRequired(UCHAR nSubAuthorityCount)
BOOL WINAPI IsValidSid(PSID pSid)
BOOL WINAPI IsWellKnownSid(IN PSID pSid, IN WELL_KNOWN_SID_TYPE WellKnownSidType)
BOOL WINAPI CopySid(DWORD nDestinationSidLength, PSID pDestinationSid, PSID pSourceSid)
PUCHAR WINAPI GetSidSubAuthorityCount(PSID pSid)
BOOL WINAPI GetKernelObjectSecurity(HANDLE Handle, SECURITY_INFORMATION RequestedInformation, PSECURITY_DESCRIPTOR pSecurityDescriptor, DWORD nLength, LPDWORD lpnLengthNeeded)
BOOL WINAPI InitializeAcl(PACL pAcl, DWORD nAclLength, DWORD dwAclRevision)
BOOL WINAPI InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR pSecurityDescriptor, DWORD dwRevision)
BOOL WINAPI AddAccessAllowedAce(PACL pAcl, DWORD dwAceRevision, DWORD AccessMask, PSID pSid)
static const SID sidWorld
DWORD WINAPI GetLengthSid(PSID pSid)
BOOL WINAPI OpenThreadToken(HANDLE ThreadHandle, DWORD DesiredAccess, BOOL OpenAsSelf, HANDLE *TokenHandle)
PVOID WINAPI FreeSid(PSID pSid)
BOOL WINAPI ConvertSidToStringSidA(PSID Sid, LPSTR *StringSid)
BOOL WINAPI EqualSid(PSID pSid1, PSID pSid2)
BOOL WINAPI AccessCheck(IN PSECURITY_DESCRIPTOR pSecurityDescriptor, IN HANDLE ClientToken, IN DWORD DesiredAccess, IN PGENERIC_MAPPING GenericMapping, OUT PPRIVILEGE_SET PrivilegeSet OPTIONAL, IN OUT LPDWORD PrivilegeSetLength, OUT LPDWORD GrantedAccess, OUT LPBOOL AccessStatus)
BOOL WINAPI DuplicateTokenEx(IN HANDLE ExistingTokenHandle, IN DWORD dwDesiredAccess, IN LPSECURITY_ATTRIBUTES lpTokenAttributes OPTIONAL, IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, IN TOKEN_TYPE TokenType, OUT PHANDLE DuplicateTokenHandle)
static const char * debugstr_sid(PSID sid)
BOOL WINAPI GetFileSecurityA(LPCSTR lpFileName, SECURITY_INFORMATION RequestedInformation, PSECURITY_DESCRIPTOR pSecurityDescriptor, DWORD nLength, LPDWORD lpnLengthNeeded)
PSID_IDENTIFIER_AUTHORITY WINAPI GetSidIdentifierAuthority(PSID pSid)
BOOL WINAPI AddAccessDeniedAce(PACL pAcl, DWORD dwAceRevision, DWORD AccessMask, PSID pSid)
BOOL WINAPI SetKernelObjectSecurity(HANDLE Handle, SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR SecurityDescriptor)
BOOL WINAPI LookupPrivilegeNameA(LPCSTR lpSystemName, PLUID lpLuid, LPSTR lpName, LPDWORD cchName)
BOOL WINAPI IsValidAcl(PACL pAcl)
#define ERROR_CALL_NOT_IMPLEMENTED
#define ERROR_INVALID_PARAMETER
struct _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES
#define ReadFile(a, b, c, d, e)
#define GetProcAddress(x, y)
#define INVALID_HANDLE_VALUE
#define CreateFileMappingW(a, b, c, d, e, f)
#define CreateFileA(a, b, c, d, e, f, g)
#define GetCurrentProcess()
#define ERROR_NOT_SUPPORTED
#define HeapFree(x, y, z)
#define ERROR_INVALID_HANDLE
#define FILE_ATTRIBUTE_NORMAL
#define ERROR_ACCESS_DENIED
static void cleanup(void)
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
BOOL WINAPI RemoveDirectoryA(IN LPCSTR lpPathName)
BOOL WINAPI CreateDirectoryA(IN LPCSTR lpPathName, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes)
BOOL WINAPI SetFileAttributesA(LPCSTR lpFileName, DWORD dwFileAttributes)
BOOL WINAPI SetEndOfFile(HANDLE hFile)
DWORD WINAPI GetFileAttributesA(LPCSTR lpFileName)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
BOOL WINAPI DuplicateHandle(IN HANDLE hSourceProcessHandle, IN HANDLE hSourceHandle, IN HANDLE hTargetProcessHandle, OUT LPHANDLE lpTargetHandle, IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN DWORD dwOptions)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
UINT WINAPI GetWindowsDirectoryA(OUT LPSTR lpBuffer, IN UINT uSize)
DWORD WINAPI GetTempPathA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessA(LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
BOOL WINAPI TerminateProcess(IN HANDLE hProcess, IN UINT uExitCode)
HANDLE WINAPI OpenProcess(IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN DWORD dwProcessId)
HANDLE WINAPI OpenThread(IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN DWORD dwThreadId)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
BOOL WINAPI TerminateThread(IN HANDLE hThread, IN DWORD dwExitCode)
LANGID WINAPI GetSystemDefaultLangID(void)
int WINAPI lstrcmpA(LPCSTR str1, LPCSTR str2)
int WINAPI lstrcmpiA(LPCSTR str1, LPCSTR str2)
_In_ uint64_t _In_ uint64_t _In_ uint64_t _In_opt_ traverse_ptr * tp
static PVOID Mapping[EMS_PHYSICAL_PAGES]
ANSI_STRING * PANSI_STRING
HANDLE NTAPI CreateFileMappingA(IN HANDLE hFile, IN LPSECURITY_ATTRIBUTES lpFileMappingAttributes, IN DWORD flProtect, IN DWORD dwMaximumSizeHigh, IN DWORD dwMaximumSizeLow, IN LPCSTR lpName)
HANDLE NTAPI OpenFileMappingA(IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN LPCSTR lpName)
UINT WINAPI GetTempFileNameA(IN LPCSTR lpPathName, IN LPCSTR lpPrefixString, IN UINT uUnique, OUT LPSTR lpTempFileName)
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLdouble GLdouble GLdouble r
GLboolean GLboolean GLboolean b
GLenum GLuint GLenum GLsizei const GLchar * buf
GLuint GLsizei GLsizei * length
GLuint GLint GLboolean GLint GLenum access
GLenum GLenum GLenum GLenum mapping
GLfloat GLfloat GLfloat GLfloat h
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat token
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
HLOCAL NTAPI LocalFree(HLOCAL hMem)
_Check_return_ _CRTIMP FILE *__cdecl tmpfile(void)
#define PROCESS_SUSPEND_RESUME
#define PROCESS_TERMINATE
#define PROCESS_QUERY_INFORMATION
#define THREAD_SET_THREAD_TOKEN
#define PROCESS_CREATE_THREAD
#define THREAD_QUERY_INFORMATION
#define PROCESS_VM_OPERATION
#define PROCESS_SET_INFORMATION
#define PROCESS_CREATE_PROCESS
#define PROCESS_SET_QUOTA
#define OBJ_CASE_INSENSITIVE
#define THREAD_SET_CONTEXT
#define PROCESS_DUP_HANDLE
#define THREAD_SUSPEND_RESUME
#define THREAD_GET_CONTEXT
#define skip_(test, file, line,...)
enum _SID_NAME_USE SID_NAME_USE
enum _SECURITY_IMPERSONATION_LEVEL SECURITY_IMPERSONATION_LEVEL
WORD SECURITY_DESCRIPTOR_CONTROL
LPSTR WINAPI lstrcatA(LPSTR lpString1, LPCSTR lpString2)
int WINAPI lstrlenA(LPCSTR lpString)
#define memcpy(s1, s2, n)
#define ERROR_ALREADY_EXISTS
#define FILE_FLAG_BACKUP_SEMANTICS
#define FILE_FLAG_DELETE_ON_CLOSE
#define ERROR_FILE_NOT_FOUND
#define sprintf(buf, format,...)
#define GetCurrentProcessToken()
static void test_CreateWellKnownSid(void)
static DWORD *static TOKEN_TYPE
static POBJECTS_AND_NAME_A SE_OBJECT_TYPE LPSTR ObjectTypeName
static void test_GetSidIdentifierAuthority(void)
static POBJECT_ATTRIBUTES
static void test_AddMandatoryAce(void)
#define TEST_GRANTED_ACCESS(a, b)
static void test_token_attr(void)
#define SE_TAKE_OWNERSHIP_PRIVILEGE
static void test_default_dacl_owner_sid(void)
#define PROCESS_ALL_ACCESS_VISTA
static void test_GetExplicitEntriesFromAclW(void)
#define THREAD_QUERY_LIMITED_INFORMATION
static int debugsid_index
static POBJECTS_AND_SID pObjSid
#define SE_MIN_WELL_KNOWN_PRIVILEGE
#define EVENT_QUERY_STATE
static BOOL get_sid_info(PSID psid, LPSTR *user, LPSTR *dom)
#define SE_SYSTEM_PROFILE_PRIVILEGE
#define SE_SYNC_AGENT_PRIVILEGE
static PLSA_OBJECT_ATTRIBUTES
#define THREAD_SET_LIMITED_INFORMATION
static void test_luid(void)
#define SE_REMOTE_SHUTDOWN_PRIVILEGE
#define SE_ASSIGNPRIMARYTOKEN_PRIVILEGE
static void test_kernel_objects_security(void)
static void test_GetTokenInformation(void)
static void test_CheckTokenMembership(void)
static void test_AdjustTokenPrivileges(void)
static void test_AccessCheck(void)
static void test_AddAce(void)
static void test_system_security_access(void)
#define PROCESS_ALL_ACCESS_NT4
static POLICY_INFORMATION_CLASS
static void test_file_security(HANDLE token)
static void test_process_security_child(void)
static void test_lookupPrivilegeName(void)
static DWORD *static PHANDLE
static void test_owner_equal(HANDLE Handle, PSID expected, int line)
static POBJECTS_AND_NAME_A pObjName
static char debugsid_str[SID_SLOTS][256]
static void test_EqualSid(void)
#define SE_IMPERSONATE_PRIVILEGE
#define SE_DEBUG_PRIVILEGE
#define SE_CREATE_TOKEN_PRIVILEGE
static POBJECTS_AND_SID GUID * pObjectGuid
#define CHECK_SET_SECURITY(o, i, e)
static PEXPLICIT_ACCESSW *static HMODULE hmod
static void test_LookupAccountName(void)
static PACL *static PACL *static SECURITY_DESCRIPTOR_CONTROL
static void test_process_security(void)
#define SE_SYSTEMTIME_PRIVILEGE
#define SE_CREATE_PERMANENT_PRIVILEGE
#define SE_MACHINE_ACCOUNT_PRIVILEGE
static void test_SetSecurityDescriptorControl(PSECURITY_DESCRIPTOR sec)
#define THREAD_ALL_ACCESS_NT4
#define SE_SECURITY_PRIVILEGE
static void test_LookupAccountSid(void)
static void test_GetWindowsAccountDomainSid(void)
static void test_child_token_sd(void)
#define expect_eq(expr, value, type, format)
static ACCESS_MASK get_obj_access(HANDLE obj)
static SECURITY_DESCRIPTOR * test_get_security_descriptor(HANDLE handle, int line)
static void test_semaphore_security(HANDLE token)
#define CHECK_ONE_OF_AND_FREE(exp_str1, exp_str2)
static SECURITY_INFORMATION
static void test_FileSecurity(void)
static void test_inherited_dacl(PACL dacl, PSID admin_sid, PSID user_sid, DWORD flags, DWORD mask, BOOL todo_count, BOOL todo_sid, BOOL todo_flags, int line)
#define GetCurrentThreadEffectiveToken()
#define SE_AUDIT_PRIVILEGE
static void test_ConvertStringSecurityDescriptor(void)
#define SEMAPHORE_QUERY_STATE
static NTSTATUS *static PSID_AND_ATTRIBUTES
#define TEST_GRANTED_ACCESS2(a, b, c)
#define SE_SYSTEM_ENVIRONMENT_PRIVILEGE
static DWORD *static LPSECURITY_ATTRIBUTES
static PACL *static PEXPLICIT_ACCESSA
static void test_CreateDirectoryA(void)
static void test_maximum_allowed(void)
#define SE_MANAGE_VOLUME_PRIVILEGE
#define SE_INC_BASE_PRIORITY_PRIVILEGE
static const struct well_known_sid_value well_known_sid_values[]
static void test_GetNamedSecurityInfoA(void)
static void test_GetUserNameW(void)
static void test_GetSecurityInfo(void)
static ACL_INFORMATION_CLASS
static void test_lookupPrivilegeValue(void)
static void test_GetUserNameA(void)
static void test_impersonation_level(void)
#define GetCurrentThreadToken()
static void test_event_security(HANDLE token)
static void test_PrivateObjectSecurity(void)
static void test_child_token_sd_medium(void)
static void test_GetSidSubAuthority(void)
static OBJECT_INFORMATION_CLASS
#define SE_UNDOCK_PRIVILEGE
static void test_TokenIntegrityLevel(void)
static void test_mutex_security(HANDLE token)
static void test_SetEntriesInAclW(void)
static void test_token_security_descriptor(void)
#define SE_SHUTDOWN_PRIVILEGE
#define SE_LOCK_MEMORY_PRIVILEGE
static void test_token_label(void)
#define SE_BACKUP_PRIVILEGE
#define SE_RESTORE_PRIVILEGE
static DWORD *static PCSZ
static void test_pseudo_tokens(void)
#define PROCESS_QUERY_LIMITED_INFORMATION
static void test_default_handle_security(HANDLE token, HANDLE handle, GENERIC_MAPPING *mapping)
static void test_sid_str(PSID *sid)
static void get_nt_pathW(const char *name, UNICODE_STRING *nameW)
static POBJECTS_AND_SID GUID GUID * pInheritedObjectGuid
static void test_CreateRestrictedToken(void)
static void test_allocateLuid(void)
#define SE_PROF_SINGLE_PROCESS_PRIVILEGE
static void test_named_pipe_security(HANDLE token)
static void test_SetEntriesInAclA(void)
static void test_trustee(void)
static void test_ConvertSecurityDescriptorToString(void)
static void test_security_descriptor(void)
static void test_child_token_sd_restricted(void)
static void test_thread_security(void)
static void test_acls(void)
static void test_filemap_security(void)
#define SE_CHANGE_NOTIFY_PRIVILEGE
static DWORD *static SECURITY_IMPERSONATION_LEVEL
static PWSTR CURDIR *static PCANSI_STRING
#define SE_ENABLE_DELEGATION_PRIVILEGE
static void check_wellknown_name(const char *name, WELL_KNOWN_SID_TYPE result)
#define CHECK_RESULT_AND_FREE(exp_str)
static BOOL validate_impersonation_token(HANDLE token, DWORD *token_type)
#define SE_INCREASE_QUOTA_PRIVILEGE
static void test_BuildSecurityDescriptorW(void)
#define SE_LOAD_DRIVER_PRIVILEGE
static void validate_default_security_descriptor(SECURITY_DESCRIPTOR *sd)
static void test_granted_access(HANDLE handle, ACCESS_MASK access, ACCESS_MASK alt, int line)
#define SE_MAX_WELL_KNOWN_PRIVILEGE
static NTSTATUS *static PLUID_AND_ATTRIBUTES
static PSECURITY_DESCRIPTOR PULONG
#define SE_CREATE_GLOBAL_PRIVILEGE
#define THREAD_ALL_ACCESS_VISTA
static void test_sid(void)
static POBJECTS_AND_NAME_A SE_OBJECT_TYPE LPSTR LPSTR InheritedObjectTypeName
static void test_process_access(void)
#define SE_CREATE_PAGEFILE_PRIVILEGE
static void test_group_equal(HANDLE Handle, PSID expected, int line)
static const WCHAR desc[]
static const char filler[0x1000]
static HMODULE MODULEINFO DWORD cb
static HINSTANCE hkernel32
#define todo_wine_if(is_todo)
static WCHAR computer_name[MAX_COMPUTERNAME_LENGTH+1]
static WCHAR user_name[UNLEN+1]
static HANDLE PIO_APC_ROUTINE PVOID PIO_STATUS_BLOCK io
static SCRIPT_CACHE SCRIPT_ANALYSIS * psa
DWORD SECURITY_INFORMATION
struct _SECURITY_DESCRIPTOR * PSECURITY_DESCRIPTOR
struct _ACCESS_ALLOWED_ACE ACCESS_ALLOWED_ACE
#define MUTANT_ALL_ACCESS
#define MUTANT_QUERY_STATE
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL Dacl
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_ BOOLEAN _In_ TOKEN_TYPE TokenType
#define SE_GROUP_USE_FOR_DENY_ONLY
#define SE_GROUP_INTEGRITY_ENABLED
#define SE_GROUP_INTEGRITY
HANDLE WINAPI CreateNamedPipeA(LPCSTR lpName, DWORD dwOpenMode, DWORD dwPipeMode, DWORD nMaxInstances, DWORD nOutBufferSize, DWORD nInBufferSize, DWORD nDefaultTimeOut, LPSECURITY_ATTRIBUTES lpSecurityAttributes)
#define SPECIFIC_RIGHTS_ALL
#define SECTION_MAP_EXECUTE
#define THREAD_ALL_ACCESS
#define SECTION_MAP_WRITE
#define FILE_ATTRIBUTE_READONLY
#define FILE_GENERIC_EXECUTE
#define FILE_ATTRIBUTE_COMPRESSED
#define ACCESS_SYSTEM_SECURITY
#define PAGE_EXECUTE_READ
#define SECTION_ALL_ACCESS
#define FILE_READ_ATTRIBUTES
#define PROCESS_ALL_ACCESS
#define FILE_DELETE_CHILD
#define FILE_SHARE_DELETE
#define STANDARD_RIGHTS_READ
#define STANDARD_RIGHTS_ALL
#define STANDARD_RIGHTS_WRITE
#define FILE_ATTRIBUTE_ARCHIVE
#define PAGE_EXECUTE_WRITECOPY
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
#define STANDARD_RIGHTS_EXECUTE
#define THREAD_SET_INFORMATION
#define FILE_GENERIC_READ
#define PAGE_EXECUTE_READWRITE
#define FILE_GENERIC_WRITE
#define STANDARD_RIGHTS_REQUIRED
#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
@ PolicyAccountDomainInformation
struct _LSA_UNICODE_STRING * PLSA_UNICODE_STRING
#define POLICY_VIEW_LOCAL_INFORMATION
#define POLICY_ALL_ACCESS
#define STATUS_ACCESS_VIOLATION
#define FILE_FLAG_FIRST_PIPE_INSTANCE
int winetest_get_mainargs(char ***pargv)
void winetest_wait_child_process(HANDLE process)
BOOL WINAPI IsValidSecurityDescriptor(PSECURITY_DESCRIPTOR pSecurityDescriptor)
DWORD WINAPI BuildSecurityDescriptorW(IN PTRUSTEE_W pOwner OPTIONAL, IN PTRUSTEE_W pGroup OPTIONAL, IN ULONG cCountOfAccessEntries, IN PEXPLICIT_ACCESS_W pListOfAccessEntries OPTIONAL, IN ULONG cCountOfAuditEntries, IN PEXPLICIT_ACCESS_W pListOfAuditEntries OPTIONAL, IN PSECURITY_DESCRIPTOR pOldSD OPTIONAL, OUT PULONG pSizeNewSD, OUT PSECURITY_DESCRIPTOR *pNewSD)
BOOL WINAPI GetSecurityDescriptorControl(PSECURITY_DESCRIPTOR pSecurityDescriptor, PSECURITY_DESCRIPTOR_CONTROL pControl, LPDWORD lpdwRevision)
BOOL WINAPI GetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR pSecurityDescriptor, PSID *pGroup, LPBOOL lpbGroupDefaulted)
BOOL WINAPI SetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR pSecurityDescriptor, BOOL bDaclPresent, PACL pDacl, BOOL bDaclDefaulted)
BOOL WINAPI GetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR pSecurityDescriptor, LPBOOL lpbSaclPresent, PACL *pSacl, LPBOOL lpbSaclDefaulted)
BOOL WINAPI SetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR pSecurityDescriptor, PSID pOwner, BOOL bOwnerDefaulted)
BOOL WINAPI SetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR pSecurityDescriptor, BOOL bSaclPresent, PACL pSacl, BOOL bSaclDefaulted)
BOOL WINAPI MakeSelfRelativeSD(PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor, PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor, LPDWORD lpdwBufferLength)
BOOL WINAPI GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR pSecurityDescriptor, LPBOOL lpbDaclPresent, PACL *pDacl, LPBOOL lpbDaclDefaulted)
BOOL WINAPI SetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR pSecurityDescriptor, PSID pGroup, BOOL bGroupDefaulted)
BOOL WINAPI GetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR pSecurityDescriptor, PSID *pOwner, LPBOOL lpbOwnerDefaulted)
BOOL WINAPI SHIM_OBJ_NAME() GetComputerNameA(LPSTR lpBuffer, LPDWORD lpnSize)
static char tmpdir[MAX_PATH]
DWORD grfAccessPermissions
ACCESS_MODE grfAccessMode
DWORD grfAccessPermissions
ACCESS_MODE grfAccessMode
char max[SECURITY_MAX_SID_SIZE]
LPSTR InheritedObjectTypeName
SE_OBJECT_TYPE ObjectType
GUID InheritedObjectTypeGuid
LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY]
LPVOID lpSecurityDescriptor
SID_IDENTIFIER_AUTHORITY IdentifierAuthority
SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY]
LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]
MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation
struct _TRUSTEE_A * pMultipleTrustee
struct _TRUSTEE_W * pMultipleTrustee
MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation
HANDLE WINAPI DECLSPEC_HOTPATCH CreateSemaphoreA(IN LPSECURITY_ATTRIBUTES lpSemaphoreAttributes OPTIONAL, IN LONG lInitialCount, IN LONG lMaximumCount, IN LPCSTR lpName OPTIONAL)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventA(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCSTR lpName OPTIONAL)
HANDLE WINAPI DECLSPEC_HOTPATCH OpenMutexA(IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN LPCSTR lpName)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateMutexA(IN LPSECURITY_ATTRIBUTES lpMutexAttributes OPTIONAL, IN BOOL bInitialOwner, IN LPCSTR lpName OPTIONAL)
HANDLE WINAPI DECLSPEC_HOTPATCH OpenEventA(IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN LPCSTR lpName)
HANDLE WINAPI DECLSPEC_HOTPATCH OpenSemaphoreA(IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN LPCSTR lpName)
#define FIELD_OFFSET(t, f)
#define STATUS_ACCESS_DENIED
BOOL Privilege(LPTSTR pszPrivilege, BOOL bEnable)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
#define success(from, fromstr, to, tostr)
#define SEMAPHORE_MODIFY_STATE
#define PIPE_ACCESS_INBOUND
DWORD WINAPI GetLastError(void)
#define STARTF_USESHOWWINDOW
HANDLE WINAPI GetCurrentThread(void)
#define NMPWAIT_USE_DEFAULT_WAIT
#define PIPE_ACCESS_DUPLEX
DWORD WINAPI GetCurrentThreadId(void)
#define EVENT_MODIFY_STATE
DWORD WINAPI GetCurrentProcessId(void)
DWORD WINAPI GetWindowThreadProcessId(HWND hWnd, PDWORD lpdwProcessId)
#define SEMAPHORE_ALL_ACCESS
#define PIPE_ACCESS_OUTBOUND
BOOL WINAPI RevertToSelf(void)
#define PIPE_UNLIMITED_INSTANCES
_In_ PSID _Out_writes_to_opt_ cchName LPSTR _Inout_ LPDWORD cchName
#define MUTEX_MODIFY_STATE
_In_ ULONG _In_ ULONG_PTR ident
#define ERROR_INVALID_SECURITY_DESCR
#define ERROR_INVALID_DATATYPE
#define ERROR_TRUSTED_DOMAIN_FAILURE
#define ERROR_UNKNOWN_REVISION
#define RPC_S_INVALID_STRING_UUID
#define ERROR_NO_SUCH_PRIVILEGE
#define ERROR_INVALID_ACL
#define ERROR_CANT_OPEN_ANONYMOUS
#define ERROR_BAD_DESCRIPTOR_FORMAT
#define ERROR_NO_IMPERSONATION_TOKEN
#define ERROR_BAD_IMPERSONATION_LEVEL
#define ERROR_INVALID_SID
#define ERROR_GENERIC_NOT_MAPPED
#define RPC_S_SERVER_UNAVAILABLE
#define ERROR_TRUSTED_RELATIONSHIP_FAILURE
#define RPC_S_INVALID_NET_ADDR
#define ERROR_PRIVILEGE_NOT_HELD
#define ERROR_NONE_MAPPED
#define PROCESS_SET_LIMITED_INFORMATION
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER
HWND WINAPI GetDesktopWindow(void)
_In_ USHORT _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR _Reserved_ ULONG _In_opt_ PVOID _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH _In_opt_ PEPROCESS _In_opt_ PETHREAD _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor
#define DUPLICATE_SAME_ACCESS
_Out_ PBOOLEAN _Out_ PBOOLEAN _Out_ PSECURITY_IMPERSONATION_LEVEL ImpersonationLevel
#define RtlEqualLuid(Luid1, Luid2)
_In_ PSECURITY_SUBJECT_CONTEXT _In_ BOOLEAN _In_ ACCESS_MASK _In_ ACCESS_MASK _Outptr_opt_ PPRIVILEGE_SET * Privileges
_In_opt_ PVOID _In_opt_ PUNICODE_STRING _In_ PSECURITY_DESCRIPTOR _In_ PACCESS_STATE _In_ BOOLEAN _In_ BOOLEAN AccessGranted
_In_ PSECURITY_SUBJECT_CONTEXT _In_ BOOLEAN _In_ ACCESS_MASK _In_ ACCESS_MASK _Outptr_opt_ PPRIVILEGE_SET _In_ PGENERIC_MAPPING _In_ KPROCESSOR_MODE _Out_ PACCESS_MASK _Out_ PNTSTATUS AccessStatus
#define VALID_INHERIT_FLAGS
#define LABEL_SECURITY_INFORMATION
#define CONTAINER_INHERIT_ACE
#define DOMAIN_ALIAS_RID_USERS
#define TOKEN_QUERY_SOURCE
#define SE_OWNER_DEFAULTED
#define DOMAIN_GROUP_RID_SCHEMA_ADMINS
#define SECURITY_BUILTIN_DOMAIN_RID
#define DOMAIN_USER_RID_ADMIN
#define DACL_SECURITY_INFORMATION
#define SE_SACL_PROTECTED
#define SE_DACL_DEFAULTED
struct _TOKEN_USER TOKEN_USER
#define ACE_INHERITED_OBJECT_TYPE_PRESENT
#define SE_DACL_PROTECTED
#define SE_DACL_AUTO_INHERITED
#define SECURITY_WORLD_SID_AUTHORITY
#define TOKEN_ADJUST_PRIVILEGES
#define DOMAIN_GROUP_RID_CONTROLLERS
#define DOMAIN_GROUP_RID_COMPUTERS
#define SECURITY_WORLD_RID
#define DOMAIN_GROUP_RID_POLICY_ADMINS
#define ACCESS_ALLOWED_ACE_TYPE
#define SECURITY_MANDATORY_LABEL_AUTHORITY
#define SECURITY_LOCAL_SYSTEM_RID
#define SE_DACL_AUTO_INHERIT_REQ
#define DOMAIN_GROUP_RID_GUESTS
#define OWNER_SECURITY_INFORMATION
#define DOMAIN_USER_RID_GUEST
#define SE_SACL_DEFAULTED
struct _SECURITY_DESCRIPTOR_RELATIVE SECURITY_DESCRIPTOR_RELATIVE
#define SE_SACL_AUTO_INHERITED
#define SECURITY_NT_AUTHORITY
#define DOMAIN_ALIAS_RID_RAS_SERVERS
#define DOMAIN_GROUP_RID_CERT_ADMINS
#define OBJECT_INHERIT_ACE
@ TokenImpersonationLevel
#define SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP
#define NO_PROPAGATE_INHERIT_ACE
#define SECURITY_MANDATORY_HIGH_RID
#define TOKEN_ADJUST_DEFAULT
#define SYSTEM_MANDATORY_LABEL_ACE_TYPE
#define SECURITY_DESCRIPTOR_REVISION
* PSID_IDENTIFIER_AUTHORITY
#define TOKEN_ADJUST_GROUPS
#define SYSTEM_MANDATORY_LABEL_NO_WRITE_UP
#define SE_SACL_AUTO_INHERIT_REQ
#define GROUP_SECURITY_INFORMATION
#define ACE_OBJECT_TYPE_PRESENT
#define DOMAIN_GROUP_RID_ENTERPRISE_ADMINS
#define TOKEN_IMPERSONATE
#define SE_PRIVILEGE_ENABLED
#define SECURITY_DESCRIPTOR_MIN_LENGTH
#define SE_GROUP_DEFAULTED
#define PRIVILEGE_SET_ALL_NECESSARY
#define SID_MAX_SUB_AUTHORITIES
#define SACL_SECURITY_INFORMATION
#define SE_RM_CONTROL_VALID
#define DOMAIN_ALIAS_RID_ADMINS
#define DOMAIN_GROUP_RID_ADMINS
#define SECURITY_DESCRIPTOR_REVISION1
#define SECURITY_MANDATORY_MEDIUM_RID
#define SECURITY_MANDATORY_LOW_RID
struct _PRIVILEGE_SET PRIVILEGE_SET
#define SECURITY_MAX_SID_SIZE
#define SECURITY_NT_NON_UNIQUE
#define DOMAIN_GROUP_RID_USERS