From 3b26f513b58dda68e03e6f20669b6348ed143b92 Mon Sep 17 00:00:00 2001 From: Michael Jung Date: Mon, 14 Feb 2005 20:54:43 +0000 Subject: [PATCH] Check pdwDataLen param for non NULL'ness. Implemented PP_IMPLTYPE and PP_VERSION provider params. --- dlls/rsaenh/rsaenh.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/dlls/rsaenh/rsaenh.c b/dlls/rsaenh/rsaenh.c index 857524c5975..e95deff22fb 100644 --- a/dlls/rsaenh/rsaenh.c +++ b/dlls/rsaenh/rsaenh.c @@ -2762,6 +2762,11 @@ BOOL WINAPI RSAENH_CPGetProvParam(HCRYPTPROV hProv, DWORD dwParam, BYTE *pbData, TRACE("(hProv=%08lx, dwParam=%08lx, pbData=%p, pdwDataLen=%p, dwFlags=%08lx)\n", hProv, dwParam, pbData, pdwDataLen, dwFlags); + if (!pdwDataLen) { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + if (!lookup_handle(&handle_table, (unsigned int)hProv, RSAENH_MAGIC_CONTAINER, (OBJECTHDR**)&pKeyContainer)) { @@ -2784,7 +2789,15 @@ BOOL WINAPI RSAENH_CPGetProvParam(HCRYPTPROV hProv, DWORD dwParam, BYTE *pbData, case PP_KEYX_KEYSIZE_INC: dwTemp = 8; return copy_param(pbData, pdwDataLen, (CONST BYTE*)&dwTemp, sizeof(dwTemp)); - + + case PP_IMPTYPE: + dwTemp = CRYPT_IMPL_SOFTWARE; + return copy_param(pbData, pdwDataLen, (CONST BYTE*)&dwTemp, sizeof(dwTemp)); + + case PP_VERSION: + dwTemp = 0x00000200; + return copy_param(pbData, pdwDataLen, (CONST BYTE*)&dwTemp, sizeof(dwTemp)); + case PP_ENUMCONTAINERS: if ((dwFlags & CRYPT_FIRST) == CRYPT_FIRST) pKeyContainer->dwEnumContainersCtr = 0;