Johan Gill : advapi32: CryptCreateHash actually sets ERROR_INVALID_PARAMETER if the CSP handle is 0 .

Alexandre Julliard julliard at winehq.org
Tue Feb 14 13:23:33 CST 2012


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

Author: Johan Gill <johan.gill at gmail.com>
Date:   Tue Feb 14 12:15:04 2012 +0100

advapi32: CryptCreateHash actually sets ERROR_INVALID_PARAMETER if the CSP handle is 0.

---

 dlls/advapi32/crypt.c       |    7 +------
 dlls/advapi32/tests/crypt.c |    3 +++
 2 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/dlls/advapi32/crypt.c b/dlls/advapi32/crypt.c
index 31260a8..5f44728 100644
--- a/dlls/advapi32/crypt.c
+++ b/dlls/advapi32/crypt.c
@@ -720,12 +720,7 @@ BOOL WINAPI CryptCreateHash (HCRYPTPROV hProv, ALG_ID Algid, HCRYPTKEY hKey,
 
 	TRACE("(0x%lx, 0x%x, 0x%lx, %08x, %p)\n", hProv, Algid, hKey, dwFlags, phHash);
 
-	if (!prov)
-	{
-		SetLastError(ERROR_INVALID_HANDLE);
-		return FALSE;
-	}
-	if (!phHash || prov->dwMagic != MAGIC_CRYPTPROV ||
+	if (!prov || !phHash || prov->dwMagic != MAGIC_CRYPTPROV ||
 		(key && key->dwMagic != MAGIC_CRYPTKEY))
 	{
 		SetLastError(ERROR_INVALID_PARAMETER);
diff --git a/dlls/advapi32/tests/crypt.c b/dlls/advapi32/tests/crypt.c
index dae7263..7abf90b 100644
--- a/dlls/advapi32/tests/crypt.c
+++ b/dlls/advapi32/tests/crypt.c
@@ -238,6 +238,9 @@ static void test_incorrect_api_usage(void)
     if (!result) return;
     pCryptDestroyHash(hHash);
 
+    result = pCryptCreateHash(0, CALG_SHA, 0, 0, &hHash);
+    ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
+
     result = pCryptGenKey(0, CALG_RC4, 0, &hKey);
     ok (!result && GetLastError() == ERROR_INVALID_PARAMETER, "%d\n", GetLastError());
 




More information about the wine-cvs mailing list