diff --git a/reactos/dll/win32/advapi32/crypt/crypt.c b/reactos/dll/win32/advapi32/crypt/crypt.c index 19b85b7c5d8..d3e3cd578ba 100644 --- a/reactos/dll/win32/advapi32/crypt/crypt.c +++ b/reactos/dll/win32/advapi32/crypt/crypt.c @@ -1192,6 +1192,9 @@ BOOL WINAPI CryptEnumProvidersA (DWORD dwIndex, DWORD *pdwReserved, TRACE("(%ld, %p, %08ld, %p, %p, %p)\n", dwIndex, pdwReserved, dwFlags, pdwProvType, pszProvName, pcbProvName); + if (*pcbProvName > INT_MAX) + *pcbProvName = INT_MAX; + if(!CryptEnumProvidersW(dwIndex, pdwReserved, dwFlags, pdwProvType, NULL, &bufsize)) return FALSE; if ( pszProvName && !(str = CRYPT_Alloc(bufsize)) ) @@ -1314,6 +1317,9 @@ BOOL WINAPI CryptEnumProviderTypesA (DWORD dwIndex, DWORD *pdwReserved, TRACE("(%ld, %p, %08ld, %p, %p, %p)\n", dwIndex, pdwReserved, dwFlags, pdwProvType, pszTypeName, pcbTypeName); + if (*pcbTypeName > INT_MAX) + *pcbTypeName = INT_MAX; + if(!CryptEnumProviderTypesW(dwIndex, pdwReserved, dwFlags, pdwProvType, NULL, &bufsize)) return FALSE; if ( pszTypeName && !(str = CRYPT_Alloc(bufsize)) ) @@ -1513,6 +1519,9 @@ BOOL WINAPI CryptGetDefaultProviderA (DWORD dwProvType, DWORD *pdwReserved, TRACE("(%d, %p, %08x, %p, %p)\n", dwProvType, pdwReserved, dwFlags, pszProvName, pcbProvName); + if (*pcbProvName > INT_MAX) + *pcbProvName = INT_MAX; + CryptGetDefaultProviderW(dwProvType, pdwReserved, dwFlags, NULL, &bufsize); if ( pszProvName && !(str = CRYPT_Alloc(bufsize)) ) {