Make CryptEnumProvidersA pcbProvName parameter contain the correct
size of the provider name on return.
This commit is contained in:
parent
bea0555890
commit
8cc77c1805
|
@ -977,8 +977,18 @@ BOOL WINAPI CryptEnumProvidersA (DWORD dwIndex, DWORD *pdwReserved,
|
||||||
if (!pszProvName)
|
if (!pszProvName)
|
||||||
{
|
{
|
||||||
DWORD numkeys;
|
DWORD numkeys;
|
||||||
|
char *provName;
|
||||||
|
|
||||||
RegQueryInfoKeyA(hKey, NULL, NULL, NULL, &numkeys, pcbProvName, NULL, NULL, NULL, NULL, NULL, NULL);
|
RegQueryInfoKeyA(hKey, NULL, NULL, NULL, &numkeys, pcbProvName, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
|
||||||
|
if (!(provName = CRYPT_Alloc(*pcbProvName)))
|
||||||
|
CRYPT_ReturnLastError(ERROR_NOT_ENOUGH_MEMORY);
|
||||||
|
|
||||||
|
RegEnumKeyExA(hKey, dwIndex, provName, pcbProvName, NULL, NULL, NULL, NULL);
|
||||||
(*pcbProvName)++;
|
(*pcbProvName)++;
|
||||||
|
|
||||||
|
CRYPT_Free(provName);
|
||||||
|
|
||||||
if (dwIndex >= numkeys)
|
if (dwIndex >= numkeys)
|
||||||
CRYPT_ReturnLastError(ERROR_NO_MORE_ITEMS);
|
CRYPT_ReturnLastError(ERROR_NO_MORE_ITEMS);
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue