[PATCH 0/2] MR5535: advapi32: CryptSetKeyParam() should accept NULL pbData.
At least CryptSetKeyParam(KP_X) should accept NULL pbData. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/5535
From: Dmitry Timoshkov <dmitry(a)baikal.ru> dlls/dssenh/tests depend on CryptSetKeyParam(KP_X, NULL) returning FALSE/ERROR_INVALID_PARAMETER. Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru> --- dlls/dssenh/dssenh.spec | 2 +- dlls/dssenh/main.c | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/dlls/dssenh/dssenh.spec b/dlls/dssenh/dssenh.spec index 9060614ce49..fb83aed8be6 100644 --- a/dlls/dssenh/dssenh.spec +++ b/dlls/dssenh/dssenh.spec @@ -19,7 +19,7 @@ @ stdcall CPImportKey(ptr ptr long ptr long ptr) @ stdcall CPReleaseContext(ptr long) @ stdcall CPSetHashParam(ptr ptr long ptr long) -@ stub CPSetKeyParam +@ stdcall CPSetKeyParam(ptr ptr long ptr long) @ stub CPSetProvParam @ stdcall CPSignHash(ptr ptr long wstr long ptr ptr) @ stdcall CPVerifySignature(ptr ptr ptr long ptr wstr long) diff --git a/dlls/dssenh/main.c b/dlls/dssenh/main.c index 365b365f53f..f6f01772d35 100644 --- a/dlls/dssenh/main.c +++ b/dlls/dssenh/main.c @@ -749,6 +749,17 @@ BOOL WINAPI CPGetUserKey( HCRYPTPROV hprov, DWORD keyspec, HCRYPTKEY *ret_key ) return ret; } +BOOL WINAPI CPSetKeyParam( HCRYPTPROV hprov, HCRYPTKEY hkey, DWORD param, BYTE *data, DWORD flags ) +{ + if (!data) + { + SetLastError( ERROR_INVALID_PARAMETER ); + return FALSE; + } + + return FALSE; +} + BOOL WINAPI CPGenRandom( HCRYPTPROV hprov, DWORD len, BYTE *buffer ) { struct container *container = (struct container *)hprov; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/5535
From: Dmitry Timoshkov <dmitry(a)baikal.ru> At least CryptSetKeyParam(KP_X) should accept NULL pbData. Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru> --- dlls/advapi32/crypt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dlls/advapi32/crypt.c b/dlls/advapi32/crypt.c index 73c9b1d219d..0c94999660a 100644 --- a/dlls/advapi32/crypt.c +++ b/dlls/advapi32/crypt.c @@ -1979,7 +1979,7 @@ BOOL WINAPI CryptSetKeyParam (HCRYPTKEY hKey, DWORD dwParam, const BYTE *pbData, if (!(key = key_from_handle(hKey))) return FALSE; - if (!pbData || !key->pProvider || key->pProvider->dwMagic != MAGIC_CRYPTPROV) + if (!key->pProvider || key->pProvider->dwMagic != MAGIC_CRYPTPROV) { SetLastError(ERROR_INVALID_PARAMETER); return FALSE; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/5535
rsaenh.CPSetKeyParam() should also validate the data parameter. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/5535#note_68821
participants (3)
-
Dmitry Timoshkov -
Dmitry Timoshkov (@dmitry) -
Hans Leidekker (@hans)