Paul Vriens : crypt32/tests: Fix some crashes on older NT4 boxes.

Alexandre Julliard julliard at winehq.org
Fri Mar 13 09:13:50 CDT 2009


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

Author: Paul Vriens <Paul.Vriens.Wine at gmail.com>
Date:   Fri Mar 13 09:28:02 2009 +0100

crypt32/tests: Fix some crashes on older NT4 boxes.

---

 dlls/crypt32/tests/msg.c |   32 ++++++++++++++++----------------
 1 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/dlls/crypt32/tests/msg.c b/dlls/crypt32/tests/msg.c
index 1f4389b..c1464d9 100644
--- a/dlls/crypt32/tests/msg.c
+++ b/dlls/crypt32/tests/msg.c
@@ -29,7 +29,8 @@
 
 #include "wine/test.h"
 
-static BOOL have_nt;
+static BOOL have_nt = TRUE;
+static BOOL old_crypt32 = FALSE;
 static char oid_rsa_md5[] = szOID_RSA_MD5;
 
 static BOOL (WINAPI * pCryptAcquireContextA)
@@ -196,7 +197,7 @@ static void test_msg_get_param(void)
     ret = CryptMsgGetParam(msg, CMSG_TYPE_PARAM, 0, &value, &size);
     ok(ret, "CryptMsgGetParam failed: %x\n", GetLastError());
     ok(value == CMSG_DATA, "Expected CMSG_DATA, got %d\n", value);
-    for (i = CMSG_CONTENT_PARAM; have_nt && (i <= CMSG_CMS_SIGNER_INFO_PARAM); i++)
+    for (i = CMSG_CONTENT_PARAM; !old_crypt32 && (i <= CMSG_CMS_SIGNER_INFO_PARAM); i++)
     {
         size = 0;
         ret = CryptMsgGetParam(msg, i, 0, NULL, &size);
@@ -211,7 +212,7 @@ static void test_msg_get_param(void)
     ret = CryptMsgGetParam(msg, CMSG_TYPE_PARAM, 0, &value, &size);
     ok(ret, "CryptMsgGetParam failed: %x\n", GetLastError());
     ok(value == CMSG_ENVELOPED, "Expected CMSG_ENVELOPED, got %d\n", value);
-    for (i = CMSG_CONTENT_PARAM; have_nt && (i <= CMSG_CMS_SIGNER_INFO_PARAM); i++)
+    for (i = CMSG_CONTENT_PARAM; !old_crypt32 && (i <= CMSG_CMS_SIGNER_INFO_PARAM); i++)
     {
         size = 0;
         ret = CryptMsgGetParam(msg, i, 0, NULL, &size);
@@ -226,7 +227,7 @@ static void test_msg_get_param(void)
     ret = CryptMsgGetParam(msg, CMSG_TYPE_PARAM, 0, &value, &size);
     ok(ret, "CryptMsgGetParam failed: %x\n", GetLastError());
     ok(value == CMSG_HASHED, "Expected CMSG_HASHED, got %d\n", value);
-    for (i = CMSG_CONTENT_PARAM; have_nt && (i <= CMSG_CMS_SIGNER_INFO_PARAM); i++)
+    for (i = CMSG_CONTENT_PARAM; !old_crypt32 && (i <= CMSG_CMS_SIGNER_INFO_PARAM); i++)
     {
         size = 0;
         ret = CryptMsgGetParam(msg, i, 0, NULL, &size);
@@ -241,7 +242,7 @@ static void test_msg_get_param(void)
     ret = CryptMsgGetParam(msg, CMSG_TYPE_PARAM, 0, &value, &size);
     ok(ret, "CryptMsgGetParam failed: %x\n", GetLastError());
     ok(value == CMSG_SIGNED, "Expected CMSG_SIGNED, got %d\n", value);
-    for (i = CMSG_CONTENT_PARAM; have_nt && (i <= CMSG_CMS_SIGNER_INFO_PARAM); i++)
+    for (i = CMSG_CONTENT_PARAM; !old_crypt32 && (i <= CMSG_CMS_SIGNER_INFO_PARAM); i++)
     {
         size = 0;
         ret = CryptMsgGetParam(msg, i, 0, NULL, &size);
@@ -428,7 +429,7 @@ static void test_data_msg_update(void)
     ok(ret, "CryptMsgUpdate failed: %x\n", GetLastError());
     CryptMsgClose(msg);
 
-    if (have_nt)
+    if (!old_crypt32)
     {
         /* Calling update after opening with an empty stream info (with a bogus
          * output function) yields an error:
@@ -2070,7 +2071,7 @@ static void test_decode_msg_update(void)
     ok(ret, "CryptMsgUpdate failed: %x\n", GetLastError());
     CryptMsgClose(msg);
 
-    if (have_nt)
+    if (!old_crypt32)
     {
         msg = CryptMsgOpenToDecode(PKCS_7_ASN_ENCODING, 0, 0, 0, NULL, &streamInfo);
         /* Updating a message that has a NULL stream callback fails */
@@ -2656,14 +2657,6 @@ static void test_msg_control(void)
     CMSG_HASHED_ENCODE_INFO hashInfo = { 0 };
     CMSG_SIGNED_ENCODE_INFO signInfo = { sizeof(signInfo), 0 };
     CMSG_CTRL_DECRYPT_PARA decryptPara = { sizeof(decryptPara), 0 };
-    BOOL old_crypt32 = FALSE;
-
-    /* I_CertUpdateStore can be used for verification if crypt32 is new enough */
-    if (!GetProcAddress(GetModuleHandleA("crypt32.dll"), "I_CertUpdateStore"))
-    {
-        win_skip("Some tests will crash on older crypt32 implementations\n");
-        old_crypt32 = TRUE;
-    }
 
     /* Crashes
     ret = CryptMsgControl(NULL, 0, 0, NULL);
@@ -2763,7 +2756,7 @@ static void test_msg_control(void)
      "Expected CRYPT_E_INVALID_MSG_TYPE, got %08x\n", GetLastError());
     CryptMsgClose(msg);
 
-    if (have_nt)
+    if (!old_crypt32)
     {
         msg = CryptMsgOpenToDecode(PKCS_7_ASN_ENCODING, 0, CMSG_HASHED, 0, NULL,
          NULL);
@@ -3177,6 +3170,13 @@ START_TEST(msg)
     if (!have_nt)
         win_skip("Win9x crashes on some parameter checks\n");
 
+    /* I_CertUpdateStore can be used for verification if crypt32 is new enough */
+    if (!GetProcAddress(GetModuleHandleA("crypt32.dll"), "I_CertUpdateStore"))
+    {
+        win_skip("Some tests will crash on older crypt32 implementations\n");
+        old_crypt32 = TRUE;
+    }
+
     /* Basic parameter checking tests */
     test_msg_open_to_encode();
     test_msg_open_to_decode();




More information about the wine-cvs mailing list