Reece H. Dunn : advapi32: Fix some cred test failures on Vista and prevent it crashing.

Alexandre Julliard julliard at winehq.org
Fri Jan 25 07:06:09 CST 2008


Module: wine
Branch: master
Commit: d4c48db4b00b84e49bbb8cb6f5b5d2e69bb116aa
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=d4c48db4b00b84e49bbb8cb6f5b5d2e69bb116aa

Author: Reece H. Dunn <msclrhd at gmail.com>
Date:   Fri Jan 25 00:23:00 2008 +0000

advapi32: Fix some cred test failures on Vista and prevent it crashing.

---

 dlls/advapi32/tests/cred.c |   25 ++++++++++++++-----------
 1 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/dlls/advapi32/tests/cred.c b/dlls/advapi32/tests/cred.c
index 24db015..2fbd1c7 100644
--- a/dlls/advapi32/tests/cred.c
+++ b/dlls/advapi32/tests/cred.c
@@ -50,8 +50,8 @@ static void test_CredReadA(void)
 
     SetLastError(0xdeadbeef);
     ret = pCredReadA(TEST_TARGET_NAME, CRED_TYPE_GENERIC, 0xdeadbeef, &cred);
-    ok(!ret && GetLastError() == ERROR_INVALID_FLAGS,
-        "CredReadA should have failed with ERROR_INVALID_FLAGS instead of %d\n",
+    ok(!ret && ( GetLastError() == ERROR_INVALID_FLAGS || GetLastError() == ERROR_INVALID_PARAMETER ),
+        "CredReadA should have failed with ERROR_INVALID_FLAGS or ERROR_INVALID_PARAMETER instead of %d\n",
         GetLastError());
 
     SetLastError(0xdeadbeef);
@@ -95,8 +95,8 @@ static void test_CredWriteA(void)
 
     SetLastError(0xdeadbeef);
     ret = pCredWriteA(&new_cred, 0);
-    ok(!ret && GetLastError() == ERROR_BAD_USERNAME,
-        "CredWrite with username without domain should return ERROR_BAD_USERNAME not %d\n", GetLastError());
+    ok(!ret && ( GetLastError() == ERROR_BAD_USERNAME || GetLastError() == ERROR_NO_SUCH_LOGON_SESSION /* Vista */ ),
+        "CredWrite with username without domain should return ERROR_BAD_USERNAME or ERROR_NO_SUCH_LOGON_SESSION not %d\n", GetLastError());
 
     new_cred.UserName = NULL;
     SetLastError(0xdeadbeef);
@@ -118,8 +118,8 @@ static void test_CredDeleteA(void)
 
     SetLastError(0xdeadbeef);
     ret = pCredDeleteA(TEST_TARGET_NAME, CRED_TYPE_GENERIC, 0xdeadbeef);
-    ok(!ret && GetLastError() == ERROR_INVALID_FLAGS,
-        "CredDeleteA should have failed with ERROR_INVALID_FLAGS instead of %d\n",
+    ok(!ret && ( GetLastError() == ERROR_INVALID_FLAGS || GetLastError() == ERROR_INVALID_PARAMETER /* Vista */ ),
+        "CredDeleteA should have failed with ERROR_INVALID_FLAGS or ERROR_INVALID_PARAMETER instead of %d\n",
         GetLastError());
 }
 
@@ -226,11 +226,14 @@ static void test_domain_password(void)
 
     ret = pCredReadA(TEST_TARGET_NAME, CRED_TYPE_DOMAIN_PASSWORD, 0, &cred);
     ok(ret, "CredReadA failed with error %d\n", GetLastError());
-    todo_wine
-    ok(cred->CredentialBlobSize == 0, "expected CredentialBlobSize of 0 but got %d\n", cred->CredentialBlobSize);
-    todo_wine
-    ok(!cred->CredentialBlob, "expected NULL credentials but got %p\n", cred->CredentialBlob);
-    pCredFree(cred);
+    if (ret)  /* don't check the values of cred, if CredReadA failed. */
+    {
+        todo_wine
+        ok(cred->CredentialBlobSize == 0, "expected CredentialBlobSize of 0 but got %d\n", cred->CredentialBlobSize);
+        todo_wine
+        ok(!cred->CredentialBlob, "expected NULL credentials but got %p\n", cred->CredentialBlob);
+        pCredFree(cred);
+    }
 
     ret = pCredDeleteA(TEST_TARGET_NAME, CRED_TYPE_DOMAIN_PASSWORD, 0);
     ok(ret, "CredDeleteA failed with error %d\n", GetLastError());




More information about the wine-cvs mailing list