advapi32: add more LookupAccountSid tests
Robert Reif
reif at earthlink.net
Sat Aug 12 07:27:57 CDT 2006
-------------- next part --------------
diff -p -u -r1.35 security.c
--- dlls/advapi32/tests/security.c 4 Aug 2006 19:58:04 -0000 1.35
+++ dlls/advapi32/tests/security.c 12 Aug 2006 12:25:51 -0000
@@ -195,6 +195,7 @@ static void test_sid(void)
LocalFree( psid );
}
+ trace("String SIDs:\n");
test_str_sid("AO");
test_str_sid("RU");
test_str_sid("AN");
@@ -846,6 +847,34 @@ static void test_token_attr(void)
}
}
+typedef union _MAX_SID
+{
+ SID sid;
+ char max[SECURITY_MAX_SID_SIZE];
+} MAX_SID;
+
+static void test_sid_str(PSID * sid)
+{
+ char *str_sid;
+ BOOL ret = pConvertSidToStringSidA(sid, &str_sid);
+ ok(ret, "ConvertSidToStringSidA() failed: %ld\n", GetLastError());
+ if (ret)
+ {
+ char account[MAX_PATH], domain[MAX_PATH];
+ SID_NAME_USE use;
+ DWORD acc_size = MAX_PATH;
+ DWORD dom_size = MAX_PATH;
+ ret = LookupAccountSid(NULL, sid, account, &acc_size, domain, &dom_size, &use);
+ ok(ret || (!ret && (GetLastError() == ERROR_NONE_MAPPED)),
+ "LookupAccountSid(%s) failed: %ld\n", str_sid, GetLastError());
+ if (ret)
+ trace(" %s %s\\%s %d\n", str_sid, domain, account, use);
+ else if (GetLastError() == ERROR_NONE_MAPPED)
+ trace(" %s Couldn't me mapped\n", str_sid);
+ LocalFree(str_sid);
+ }
+}
+
static void test_LookupAccountSid(void)
{
SID_IDENTIFIER_AUTHORITY SIDAuthNT = { SECURITY_NT_AUTHORITY };
@@ -855,11 +884,7 @@ static void test_LookupAccountSid(void)
SID_NAME_USE use;
BOOL ret;
DWORD size;
- union u
- {
- SID sid;
- char max[SECURITY_MAX_SID_SIZE];
- } max_sid;
+ MAX_SID max_sid;
char *str_sid;
int i;
@@ -931,72 +956,35 @@ static void test_LookupAccountSid(void)
if (info->DomainSid)
{
int count = *GetSidSubAuthorityCount(info->DomainSid);
- int len = GetSidLengthRequired(count);
-
- CopySid(len, &max_sid, info->DomainSid);
-
- ret = pConvertSidToStringSidA(&max_sid.sid, &str_sid);
- ok(ret, "ConvertSidToStringSidA() failed: %ld\n", GetLastError());
- if (ret)
- {
- acc_size = MAX_PATH;
- dom_size = MAX_PATH;
- ret = LookupAccountSid(NULL, &max_sid.sid, account, &acc_size, domain, &dom_size, &use);
- ok(ret, "LookupAccountSid(%s) failed: %ld\n", str_sid, GetLastError());
- if (ret)
- trace(" %s %s\\%s %d\n", str_sid, domain, account, use);
- LocalFree(str_sid);
- }
-
+ CopySid(GetSidLengthRequired(count), &max_sid, info->DomainSid);
+ test_sid_str((PSID)&max_sid.sid);
max_sid.sid.SubAuthority[count] = DOMAIN_USER_RID_ADMIN;
max_sid.sid.SubAuthorityCount = count + 1;
-
- ret = pConvertSidToStringSidA(&max_sid.sid, &str_sid);
- ok(ret, "ConvertSidToStringSidA() failed: %ld\n", GetLastError());
- if (ret)
- {
- acc_size = MAX_PATH;
- dom_size = MAX_PATH;
- ret = LookupAccountSid(NULL, &max_sid.sid, account, &acc_size, domain, &dom_size, &use);
- ok(ret, "LookupAccountSid(%s) failed: %ld\n", str_sid, GetLastError());
- if (ret)
- trace(" %s %s\\%s %d\n", str_sid, domain, account, use);
- LocalFree(str_sid);
- }
-
+ test_sid_str((PSID)&max_sid.sid);
max_sid.sid.SubAuthority[count] = DOMAIN_USER_RID_GUEST;
- max_sid.sid.SubAuthorityCount = count + 1;
-
- ret = pConvertSidToStringSidA(&max_sid.sid, &str_sid);
- ok(ret, "ConvertSidToStringSidA() failed: %ld\n", GetLastError());
- if (ret)
- {
- acc_size = MAX_PATH;
- dom_size = MAX_PATH;
- ret = LookupAccountSid(NULL, &max_sid.sid, account, &acc_size, domain, &dom_size, &use);
- ok(ret, "LookupAccountSid(%s) failed: %ld\n", str_sid, GetLastError());
- if (ret)
- trace(" %s %s\\%s %d\n", str_sid, domain, account, use);
- LocalFree(str_sid);
- }
-
- max_sid.sid.SubAuthority[count] = 1000;
- max_sid.sid.SubAuthorityCount = count + 1;
-
- ret = pConvertSidToStringSidA(&max_sid.sid, &str_sid);
- ok(ret, "ConvertSidToStringSidA() failed: %ld\n", GetLastError());
- if (ret)
- {
- acc_size = MAX_PATH;
- dom_size = MAX_PATH;
- ret = LookupAccountSid(NULL, &max_sid.sid, account, &acc_size, domain, &dom_size, &use);
- /* this can fail if no user accounts exist */
- if (ret)
- trace(" %s %s\\%s %d\n", str_sid, domain, account, use);
- else
- trace("LookupAccountSid(%s) failed: %ld\n", str_sid, GetLastError());
- LocalFree(str_sid);
- }
+ test_sid_str((PSID)&max_sid.sid);
+ max_sid.sid.SubAuthority[count] = DOMAIN_GROUP_RID_ADMINS;
+ test_sid_str((PSID)&max_sid.sid);
+ max_sid.sid.SubAuthority[count] = DOMAIN_GROUP_RID_USERS;
+ test_sid_str((PSID)&max_sid.sid);
+ max_sid.sid.SubAuthority[count] = DOMAIN_GROUP_RID_GUESTS;
+ test_sid_str((PSID)&max_sid.sid);
+ max_sid.sid.SubAuthority[count] = DOMAIN_GROUP_RID_COMPUTERS;
+ test_sid_str((PSID)&max_sid.sid);
+ max_sid.sid.SubAuthority[count] = DOMAIN_GROUP_RID_CONTROLLERS;
+ test_sid_str((PSID)&max_sid.sid);
+ max_sid.sid.SubAuthority[count] = DOMAIN_GROUP_RID_CERT_ADMINS;
+ test_sid_str((PSID)&max_sid.sid);
+ max_sid.sid.SubAuthority[count] = DOMAIN_GROUP_RID_SCHEMA_ADMINS;
+ test_sid_str((PSID)&max_sid.sid);
+ max_sid.sid.SubAuthority[count] = DOMAIN_GROUP_RID_ENTERPRISE_ADMINS;
+ test_sid_str((PSID)&max_sid.sid);
+ max_sid.sid.SubAuthority[count] = DOMAIN_GROUP_RID_POLICY_ADMINS;
+ test_sid_str((PSID)&max_sid.sid);
+ max_sid.sid.SubAuthority[count] = DOMAIN_ALIAS_RID_RAS_SERVERS;
+ test_sid_str((PSID)&max_sid.sid);
+ max_sid.sid.SubAuthority[count] = 1000; /* first user account */
+ test_sid_str((PSID)&max_sid.sid);
}
pLsaFreeMemory((LPVOID)info);
More information about the wine-patches
mailing list