Jeremy White : advapi32/tests: Only release providers and free keys if we' ve had success creating them.
Alexandre Julliard
julliard at winehq.org
Wed Nov 4 10:26:24 CST 2009
Module: wine
Branch: master
Commit: 5df2626aaeab15a13364f0c1e660d933b577ffd3
URL: http://source.winehq.org/git/wine.git/?a=commit;h=5df2626aaeab15a13364f0c1e660d933b577ffd3
Author: Jeremy White <jwhite at codeweavers.com>
Date: Mon Nov 2 16:46:07 2009 -0600
advapi32/tests: Only release providers and free keys if we've had success creating them.
---
dlls/advapi32/tests/crypt.c | 185 +++++++++++++++++++++++--------------------
1 files changed, 99 insertions(+), 86 deletions(-)
diff --git a/dlls/advapi32/tests/crypt.c b/dlls/advapi32/tests/crypt.c
index 131e605..9eacbd4 100644
--- a/dlls/advapi32/tests/crypt.c
+++ b/dlls/advapi32/tests/crypt.c
@@ -956,70 +956,78 @@ static void test_rc2_keylen(void)
ret = pCryptAcquireContextA(&provider, NULL, NULL,
PROV_RSA_FULL, CRYPT_VERIFYCONTEXT);
ok(ret, "CryptAcquireContext error %u\n", GetLastError());
-
- key_blob.header.bType = PLAINTEXTKEYBLOB;
- key_blob.header.bVersion = CUR_BLOB_VERSION;
- key_blob.header.reserved = 0;
- key_blob.header.aiKeyAlg = CALG_RC2;
- key_blob.key_size = sizeof(key);
- memcpy(key_blob.key_data, key, key_length);
-
- /* Importing a 16-byte key works with the default provider. */
- SetLastError(0xdeadbeef);
- ret = pCryptImportKey(provider, (BYTE*)&key_blob,
- sizeof(BLOBHEADER)+sizeof(DWORD)+key_blob.key_size,
- 0, CRYPT_IPSEC_HMAC_KEY, &hkey);
- /* CRYPT_IPSEC_HMAC_KEY is not supported on W2K and lower */
- todo_wine
- ok(ret ||
- broken(!ret && GetLastError() == NTE_BAD_FLAGS),
- "CryptImportKey error %08x\n", GetLastError());
-
- pCryptDestroyKey(hkey);
- pCryptReleaseContext(provider, 0);
+ if (ret)
+ {
+ key_blob.header.bType = PLAINTEXTKEYBLOB;
+ key_blob.header.bVersion = CUR_BLOB_VERSION;
+ key_blob.header.reserved = 0;
+ key_blob.header.aiKeyAlg = CALG_RC2;
+ key_blob.key_size = sizeof(key);
+ memcpy(key_blob.key_data, key, key_length);
+
+ /* Importing a 16-byte key works with the default provider. */
+ SetLastError(0xdeadbeef);
+ ret = pCryptImportKey(provider, (BYTE*)&key_blob,
+ sizeof(BLOBHEADER)+sizeof(DWORD)+key_blob.key_size,
+ 0, CRYPT_IPSEC_HMAC_KEY, &hkey);
+ /* CRYPT_IPSEC_HMAC_KEY is not supported on W2K and lower */
+ todo_wine
+ ok(ret ||
+ broken(!ret && GetLastError() == NTE_BAD_FLAGS),
+ "CryptImportKey error %08x\n", GetLastError());
+
+ if (ret)
+ pCryptDestroyKey(hkey);
+ pCryptReleaseContext(provider, 0);
+ }
SetLastError(0xdeadbeef);
ret = pCryptAcquireContextA(&provider, NULL, MS_DEF_PROV,
PROV_RSA_FULL, CRYPT_VERIFYCONTEXT);
ok(ret, "CryptAcquireContext error %08x\n", GetLastError());
- /* Importing a 16-byte key doesn't work with the base provider.. */
- SetLastError(0xdeadbeef);
- ret = pCryptImportKey(provider, (BYTE*)&key_blob,
- sizeof(BLOBHEADER)+sizeof(DWORD)+key_blob.key_size,
- 0, 0, &hkey);
- ok(!ret && (GetLastError() == NTE_BAD_DATA ||
- GetLastError() == NTE_BAD_LEN || /* Win7 */
- GetLastError() == NTE_BAD_TYPE || /* W2K */
- GetLastError() == NTE_PERM), /* Win9x, WinMe and NT4 */
- "unexpected error %08x\n", GetLastError());
- /* but importing an 56-bit (7-byte) key does.. */
- key_blob.key_size = 7;
- SetLastError(0xdeadbeef);
- ret = pCryptImportKey(provider, (BYTE*)&key_blob,
- sizeof(BLOBHEADER)+sizeof(DWORD)+key_blob.key_size,
- 0, 0, &hkey);
- ok(ret ||
- broken(!ret && GetLastError() == NTE_BAD_TYPE) || /* W2K */
- broken(!ret && GetLastError() == NTE_PERM), /* Win9x, WinMe and NT4 */
- "CryptAcquireContext error %08x\n", GetLastError());
- pCryptDestroyKey(hkey);
- /* as does importing a 16-byte key with the base provider when
- * CRYPT_IPSEC_HMAC_KEY is specified.
- */
- key_blob.key_size = sizeof(key);
- SetLastError(0xdeadbeef);
- ret = pCryptImportKey(provider, (BYTE*)&key_blob,
- sizeof(BLOBHEADER)+sizeof(DWORD)+key_blob.key_size,
- 0, CRYPT_IPSEC_HMAC_KEY, &hkey);
- /* CRYPT_IPSEC_HMAC_KEY is not supported on W2K and lower */
- todo_wine
- ok(ret ||
- broken(!ret && GetLastError() == NTE_BAD_FLAGS),
- "CryptImportKey error %08x\n", GetLastError());
- pCryptDestroyKey(hkey);
-
- pCryptReleaseContext(provider, 0);
+ if (ret)
+ {
+ /* Importing a 16-byte key doesn't work with the base provider.. */
+ SetLastError(0xdeadbeef);
+ ret = pCryptImportKey(provider, (BYTE*)&key_blob,
+ sizeof(BLOBHEADER)+sizeof(DWORD)+key_blob.key_size,
+ 0, 0, &hkey);
+ ok(!ret && (GetLastError() == NTE_BAD_DATA ||
+ GetLastError() == NTE_BAD_LEN || /* Win7 */
+ GetLastError() == NTE_BAD_TYPE || /* W2K */
+ GetLastError() == NTE_PERM), /* Win9x, WinMe and NT4 */
+ "unexpected error %08x\n", GetLastError());
+ /* but importing an 56-bit (7-byte) key does.. */
+ key_blob.key_size = 7;
+ SetLastError(0xdeadbeef);
+ ret = pCryptImportKey(provider, (BYTE*)&key_blob,
+ sizeof(BLOBHEADER)+sizeof(DWORD)+key_blob.key_size,
+ 0, 0, &hkey);
+ ok(ret ||
+ broken(!ret && GetLastError() == NTE_BAD_TYPE) || /* W2K */
+ broken(!ret && GetLastError() == NTE_PERM), /* Win9x, WinMe and NT4 */
+ "CryptAcquireContext error %08x\n", GetLastError());
+ if (ret)
+ pCryptDestroyKey(hkey);
+ /* as does importing a 16-byte key with the base provider when
+ * CRYPT_IPSEC_HMAC_KEY is specified.
+ */
+ key_blob.key_size = sizeof(key);
+ SetLastError(0xdeadbeef);
+ ret = pCryptImportKey(provider, (BYTE*)&key_blob,
+ sizeof(BLOBHEADER)+sizeof(DWORD)+key_blob.key_size,
+ 0, CRYPT_IPSEC_HMAC_KEY, &hkey);
+ /* CRYPT_IPSEC_HMAC_KEY is not supported on W2K and lower */
+ todo_wine
+ ok(ret ||
+ broken(!ret && GetLastError() == NTE_BAD_FLAGS),
+ "CryptImportKey error %08x\n", GetLastError());
+ if (ret)
+ pCryptDestroyKey(hkey);
+
+ pCryptReleaseContext(provider, 0);
+ }
key_blob.key_size = sizeof(key);
SetLastError(0xdeadbeef);
@@ -1027,34 +1035,39 @@ static void test_rc2_keylen(void)
PROV_RSA_FULL, CRYPT_VERIFYCONTEXT);
ok(ret, "CryptAcquireContext error %08x\n", GetLastError());
- /* Importing a 16-byte key also works with the default provider when
- * CRYPT_IPSEC_HMAC_KEY is specified.
- */
- SetLastError(0xdeadbeef);
- ret = pCryptImportKey(provider, (BYTE*)&key_blob,
- sizeof(BLOBHEADER)+sizeof(DWORD)+key_blob.key_size,
- 0, CRYPT_IPSEC_HMAC_KEY, &hkey);
- todo_wine
- ok(ret ||
- broken(!ret && GetLastError() == NTE_BAD_FLAGS),
- "CryptImportKey error %08x\n", GetLastError());
- pCryptDestroyKey(hkey);
-
- /* There is no apparent limit to the size of the input key when
- * CRYPT_IPSEC_HMAC_KEY is specified.
- */
- key_blob.key_size = sizeof(key_blob.key_data);
- SetLastError(0xdeadbeef);
- ret = pCryptImportKey(provider, (BYTE*)&key_blob,
- sizeof(BLOBHEADER)+sizeof(DWORD)+key_blob.key_size,
- 0, CRYPT_IPSEC_HMAC_KEY, &hkey);
- todo_wine
- ok(ret ||
- broken(!ret && GetLastError() == NTE_BAD_FLAGS),
- "CryptImportKey error %08x\n", GetLastError());
- pCryptDestroyKey(hkey);
-
- pCryptReleaseContext(provider, 0);
+ if (ret)
+ {
+ /* Importing a 16-byte key also works with the default provider when
+ * CRYPT_IPSEC_HMAC_KEY is specified.
+ */
+ SetLastError(0xdeadbeef);
+ ret = pCryptImportKey(provider, (BYTE*)&key_blob,
+ sizeof(BLOBHEADER)+sizeof(DWORD)+key_blob.key_size,
+ 0, CRYPT_IPSEC_HMAC_KEY, &hkey);
+ todo_wine
+ ok(ret ||
+ broken(!ret && GetLastError() == NTE_BAD_FLAGS),
+ "CryptImportKey error %08x\n", GetLastError());
+ if (ret)
+ pCryptDestroyKey(hkey);
+
+ /* There is no apparent limit to the size of the input key when
+ * CRYPT_IPSEC_HMAC_KEY is specified.
+ */
+ key_blob.key_size = sizeof(key_blob.key_data);
+ SetLastError(0xdeadbeef);
+ ret = pCryptImportKey(provider, (BYTE*)&key_blob,
+ sizeof(BLOBHEADER)+sizeof(DWORD)+key_blob.key_size,
+ 0, CRYPT_IPSEC_HMAC_KEY, &hkey);
+ todo_wine
+ ok(ret ||
+ broken(!ret && GetLastError() == NTE_BAD_FLAGS),
+ "CryptImportKey error %08x\n", GetLastError());
+ if (ret)
+ pCryptDestroyKey(hkey);
+
+ pCryptReleaseContext(provider, 0);
+ }
}
START_TEST(crypt)
More information about the wine-cvs
mailing list