From 16dc83578a97eb68c739d8ee8fb7611b3b4fe3b4 Mon Sep 17 00:00:00 2001 From: Johan Gill Date: Tue, 14 Feb 2012 12:15:04 +0100 Subject: [PATCH] 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 31260a89e2b..5f44728da8c 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 dae72632e34..7abf90b0916 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());