[PATCH] Fix test failures on W2K

Paul Vriens Paul.Vriens.Wine at gmail.com
Fri Apr 3 03:55:50 CDT 2009


---
 dlls/advapi32/tests/security.c |   24 ++++++++++++++++--------
 1 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index f264fd8..7ef4a32 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -1684,7 +1684,7 @@ static void test_LookupAccountSid(void)
     }
 }
 
-static void get_sid_info(PSID psid, LPSTR *user, LPSTR *dom)
+static BOOL get_sid_info(PSID psid, LPSTR *user, LPSTR *dom)
 {
     static CHAR account[UNLEN + 1];
     static CHAR domain[UNLEN + 1];
@@ -1697,7 +1697,8 @@ static void get_sid_info(PSID psid, LPSTR *user, LPSTR *dom)
     size = dom_size = UNLEN + 1;
     account[0] = '\0';
     domain[0] = '\0';
-    LookupAccountSidA(NULL, psid, account, &size, domain, &dom_size, &use);
+    SetLastError(0xdeadbeef);
+    return LookupAccountSidA(NULL, psid, account, &size, domain, &dom_size, &use);
 }
 
 static void check_wellknown_name(const char* name, WELL_KNOWN_SID_TYPE result)
@@ -1711,7 +1712,7 @@ static void check_wellknown_name(const char* name, WELL_KNOWN_SID_TYPE result)
     SID_NAME_USE sid_use;
     LPSTR domain, account, sid_domain, wk_domain, wk_account;
     PSID psid;
-    BOOL ret;
+    BOOL ret ,ret2;
 
     sid_size = 0;
     domain_size = 0;
@@ -1723,19 +1724,25 @@ static void check_wellknown_name(const char* name, WELL_KNOWN_SID_TYPE result)
     if (!result)
     {
         ok(!ret, " %s Should have failed to lookup account name\n",name);
-        return;
+        goto cleanup;
     }
 
     AllocateAndInitializeSid(&ident, 6, SECURITY_NT_NON_UNIQUE, 12, 23, 34, 45, 56, 0, 0, &domainsid);
     cb = sizeof(wk_sid);
     if (!pCreateWellKnownSid(result, domainsid, wk_sid, &cb))
     {
-        win_skip("SID %i is not avalable on the system\n",result);
-        return;
+        win_skip("SID %i is not available on the system\n",result);
+        goto cleanup;
     }
 
+    ret2 = get_sid_info(wk_sid, &wk_account, &wk_domain);
+    if (!ret2 && GetLastError() == ERROR_NONE_MAPPED)
+    {
+        win_skip("CreateWellKnownSid() succeeded but the account '%s' is not present (W2K)\n", name);
+        goto cleanup;
+    }
+    
     get_sid_info(psid, &account, &sid_domain);
-    get_sid_info(wk_sid, &wk_account, &wk_domain);
 
     ok(ret, "Failed to lookup account name %s\n",name);
     ok(sid_size != 0, "sid_size was zero\n");
@@ -1746,6 +1753,7 @@ static void check_wellknown_name(const char* name, WELL_KNOWN_SID_TYPE result)
     ok(!lstrcmp(domain, wk_domain), "Expected %s, got %s\n", wk_domain, domain);
     ok(sid_use == SidTypeWellKnownGroup , "Expected Use (5), got %d\n", sid_use);
 
+cleanup:
     HeapFree(GetProcessHeap(),0,psid);
     HeapFree(GetProcessHeap(),0,domain);
 }
@@ -1958,7 +1966,7 @@ static void test_LookupAccountName(void)
 
     if (PRIMARYLANGID(LANGIDFROMLCID(GetThreadLocale())) != LANG_ENGLISH)
     {
-        skip("Non-english locale (skipping well know name creation tests)\n");
+        skip("Non-english locale (skipping well known name creation tests)\n");
         return;
     }
 
-- 
1.6.0.6


--------------050407010504010101040705--



More information about the wine-patches mailing list