advapi32/tests: Check all CryptReleaseContext() calls.

Signed-off-by: Serge Gautherie <winehq-git_serge_180711@gautherie.fr>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
feature/deterministic
Serge Gautherie 2020-03-17 14:49:13 +01:00 committed by Alexandre Julliard
parent 8b9e3dae4f
commit 812c981886
1 changed files with 44 additions and 18 deletions

View File

@ -64,25 +64,30 @@ static void init_function_pointers(void)
static void init_environment(void)
{
HCRYPTPROV hProv;
BOOL ret;
/* Ensure that container "wine_test_keyset" does exist */
if (!CryptAcquireContextA(&hProv, szKeySet, szRsaBaseProv, PROV_RSA_FULL, 0))
{
CryptAcquireContextA(&hProv, szKeySet, szRsaBaseProv, PROV_RSA_FULL, CRYPT_NEWKEYSET);
}
CryptReleaseContext(hProv, 0);
ret = CryptReleaseContext(hProv, 0);
ok(ret, "got %u\n", GetLastError());
/* Ensure that container "wine_test_keyset" does exist in default PROV_RSA_FULL type provider */
if (!CryptAcquireContextA(&hProv, szKeySet, NULL, PROV_RSA_FULL, 0))
{
CryptAcquireContextA(&hProv, szKeySet, NULL, PROV_RSA_FULL, CRYPT_NEWKEYSET);
}
CryptReleaseContext(hProv, 0);
ret = CryptReleaseContext(hProv, 0);
ok(ret, "got %u\n", GetLastError());
/* Ensure that container "wine_test_bad_keyset" does not exist. */
if (CryptAcquireContextA(&hProv, szBadKeySet, szRsaBaseProv, PROV_RSA_FULL, 0))
{
CryptReleaseContext(hProv, 0);
ret = CryptReleaseContext(hProv, 0);
ok(ret, "got %u\n", GetLastError());
CryptAcquireContextA(&hProv, szBadKeySet, szRsaBaseProv, PROV_RSA_FULL, CRYPT_DELETEKEYSET);
}
}
@ -90,25 +95,32 @@ static void init_environment(void)
static void clean_up_environment(void)
{
HCRYPTPROV hProv;
BOOL ret;
/* Remove container "wine_test_keyset" */
if (CryptAcquireContextA(&hProv, szKeySet, szRsaBaseProv, PROV_RSA_FULL, 0))
{
CryptReleaseContext(hProv, 0);
ret = CryptReleaseContext(hProv, 0);
ok(ret, "got %u\n", GetLastError());
CryptAcquireContextA(&hProv, szKeySet, szRsaBaseProv, PROV_RSA_FULL, CRYPT_DELETEKEYSET);
}
/* Remove container "wine_test_keyset" from default PROV_RSA_FULL type provider */
if (CryptAcquireContextA(&hProv, szKeySet, NULL, PROV_RSA_FULL, 0))
{
CryptReleaseContext(hProv, 0);
ret = CryptReleaseContext(hProv, 0);
ok(ret, "got %u\n", GetLastError());
CryptAcquireContextA(&hProv, szKeySet, NULL, PROV_RSA_FULL, CRYPT_DELETEKEYSET);
}
/* Remove container "wine_test_bad_keyset" */
if (CryptAcquireContextA(&hProv, szBadKeySet, szRsaBaseProv, PROV_RSA_FULL, 0))
{
CryptReleaseContext(hProv, 0);
ret = CryptReleaseContext(hProv, 0);
ok(ret, "got %u\n", GetLastError());
CryptAcquireContextA(&hProv, szBadKeySet, szRsaBaseProv, PROV_RSA_FULL, CRYPT_DELETEKEYSET);
}
}
@ -159,8 +171,11 @@ if (0)
GLE == NTE_FAIL ||
GLE == ERROR_NOT_LOGGED_ON), "%d/%d\n", result, GLE);
if (hProv)
CryptReleaseContext(hProv, 0);
if (hProv)
{
result = CryptReleaseContext(hProv, 0);
ok(result, "got %u\n", GetLastError());
}
/* Try again, witch an empty ("\0") szProvider parameter */
hProv = 0;
@ -173,8 +188,11 @@ if (0)
GLE == NTE_FAIL ||
GLE == ERROR_NOT_LOGGED_ON), "%d/%d\n", result, GetLastError());
if (hProv)
CryptReleaseContext(hProv, 0);
if (hProv)
{
result = CryptReleaseContext(hProv, 0);
ok(result, "got %u\n", GetLastError());
}
}
static void test_incorrect_api_usage(void)
@ -238,11 +256,13 @@ static void test_incorrect_api_usage(void)
if (!result) return;
result = CryptReleaseContext(hProv, 0);
ok (result, "%d\n", GetLastError());
ok(result, "got %u\n", GetLastError());
if (!result) return;
SetLastError(0xdeadbeef);
result = CryptReleaseContext(hProv, 0);
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
ok(!result, "CryptReleaseContext succeeded unexpectedly\n");
ok(GetLastError() == ERROR_INVALID_PARAMETER, "got %u\n", GetLastError());
result = pCryptGenRandom(hProv, 1, &temp);
ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
@ -426,7 +446,9 @@ static void test_verify_sig(void)
"Expected NTE_BAD_SIGNATURE, got %08x\n", GetLastError());
CryptDestroyKey(key);
CryptDestroyHash(hash);
CryptReleaseContext(prov, 0);
ret = CryptReleaseContext(prov, 0);
ok(ret, "got %u\n", GetLastError());
}
static BOOL FindProvRegVals(DWORD dwIndex, DWORD *pdwProvType, LPSTR *pszProvName,
@ -938,7 +960,8 @@ static void test_machine_guid(void)
ret = CryptAcquireContextA(&hCryptProv, szKeySet, NULL, PROV_RSA_FULL, 0);
ok(ret || broken(!ret && GetLastError() == NTE_KEYSET_ENTRY_BAD /* NT4 */),
"CryptAcquireContextA failed: %08x\n", GetLastError());
CryptReleaseContext(hCryptProv, 0);
ret = CryptReleaseContext(hCryptProv, 0);
ok(ret, "got %u\n", GetLastError());
if (restoreGuid)
RegSetValueExA(key, "MachineGuid", 0, REG_SZ, (const BYTE *)originalGuid,
@ -986,10 +1009,11 @@ static void test_rc2_keylen(void)
ok(ret ||
broken(!ret && GetLastError() == NTE_BAD_FLAGS),
"CryptImportKey error %08x\n", GetLastError());
if (ret)
CryptDestroyKey(hkey);
CryptReleaseContext(provider, 0);
ret = CryptReleaseContext(provider, 0);
ok(ret, "got %u\n", GetLastError());
}
SetLastError(0xdeadbeef);
@ -1033,7 +1057,8 @@ static void test_rc2_keylen(void)
if (ret)
CryptDestroyKey(hkey);
CryptReleaseContext(provider, 0);
ret = CryptReleaseContext(provider, 0);
ok(ret, "got %u\n", GetLastError());
}
key_blob.key_size = sizeof(key);
@ -1068,7 +1093,8 @@ static void test_rc2_keylen(void)
if (ret)
CryptDestroyKey(hkey);
CryptReleaseContext(provider, 0);
ret = CryptReleaseContext(provider, 0);
ok(ret, "got %u\n", GetLastError());
}
}