diff --git a/dlls/crypt32/decode.c b/dlls/crypt32/decode.c index 0d38efdcebd..eed7d88341b 100644 --- a/dlls/crypt32/decode.c +++ b/dlls/crypt32/decode.c @@ -115,8 +115,9 @@ static BOOL WINAPI CRYPT_AsnDecodeBits(DWORD dwCertEncodingType, static BOOL WINAPI CRYPT_AsnDecodeInt(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, PCRYPT_DECODE_PARA pDecodePara, void *pvStructInfo, DWORD *pcbStructInfo); -static BOOL CRYPT_AsnDecodeIntInternal(const BYTE *pbEncoded, DWORD cbEncoded, - DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo, DWORD *pcbDecoded); +static BOOL WINAPI CRYPT_AsnDecodeIntInternal(DWORD dwCertEncodingType, + LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, + PCRYPT_DECODE_PARA pDecodePara, void *pvStructInfo, DWORD *pcbStructInfo); /* Like CRYPT_AsnDecodeInteger, but assumes the CRYPT_INTEGER_BLOB's pbData * member has been initialized, doesn't do exception handling, and doesn't do * memory allocation. Also doesn't check tag, assumes the caller has checked @@ -846,8 +847,9 @@ static BOOL WINAPI CRYPT_AsnDecodeCertVersion(DWORD dwCertEncodingType, { BYTE lenBytes = GET_LEN_BYTES(pbEncoded[1]); - ret = CRYPT_AsnDecodeIntInternal(pbEncoded + 1 + lenBytes, dataLen, - dwFlags, pvStructInfo, pcbStructInfo, NULL); + ret = CRYPT_AsnDecodeIntInternal(dwCertEncodingType, NULL, + pbEncoded + 1 + lenBytes, dataLen, dwFlags, pDecodePara, pvStructInfo, + pcbStructInfo); } return ret; } @@ -2671,8 +2673,9 @@ static BOOL WINAPI CRYPT_AsnDecodePathLenConstraint(DWORD dwCertEncodingType, (struct PATH_LEN_CONSTRAINT *)pvStructInfo; DWORD size = sizeof(constraint->dwPathLenConstraint); - ret = CRYPT_AsnDecodeIntInternal(pbEncoded, cbEncoded, 0, - &constraint->dwPathLenConstraint, &size, NULL); + ret = CRYPT_AsnDecodeIntInternal(dwCertEncodingType, NULL, + pbEncoded, cbEncoded, dwFlags, pDecodePara, + &constraint->dwPathLenConstraint, &size); if (ret) constraint->fPathLenConstraint = TRUE; TRACE("got an int, dwPathLenConstraint is %d\n", @@ -3054,8 +3057,10 @@ static BOOL WINAPI CRYPT_AsnDecodeBits(DWORD dwCertEncodingType, return ret; } -static BOOL CRYPT_AsnDecodeIntInternal(const BYTE *pbEncoded, DWORD cbEncoded, - DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo, DWORD *pcbDecoded) +static BOOL WINAPI CRYPT_AsnDecodeIntInternal(DWORD dwCertEncodingType, + LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, + DWORD dwFlags, PCRYPT_DECODE_PARA pDecodePara, void *pvStructInfo, + DWORD *pcbStructInfo) { BOOL ret; BYTE buf[sizeof(CRYPT_INTEGER_BLOB) + sizeof(int)]; @@ -3109,8 +3114,9 @@ static BOOL WINAPI CRYPT_AsnDecodeInt(DWORD dwCertEncodingType, { DWORD bytesNeeded; - ret = CRYPT_AsnDecodeIntInternal(pbEncoded, cbEncoded, - dwFlags & ~CRYPT_DECODE_ALLOC_FLAG, NULL, &bytesNeeded, NULL); + ret = CRYPT_AsnDecodeIntInternal(dwCertEncodingType, lpszStructType, + pbEncoded, cbEncoded, dwFlags & ~CRYPT_DECODE_ALLOC_FLAG, NULL, NULL, + &bytesNeeded); if (ret) { if (!pvStructInfo) @@ -3120,9 +3126,10 @@ static BOOL WINAPI CRYPT_AsnDecodeInt(DWORD dwCertEncodingType, { if (dwFlags & CRYPT_DECODE_ALLOC_FLAG) pvStructInfo = *(BYTE **)pvStructInfo; - ret = CRYPT_AsnDecodeIntInternal(pbEncoded, cbEncoded, - dwFlags & ~CRYPT_DECODE_ALLOC_FLAG, pvStructInfo, - &bytesNeeded, NULL); + ret = CRYPT_AsnDecodeIntInternal(dwCertEncodingType, + lpszStructType, pbEncoded, cbEncoded, + dwFlags & ~CRYPT_DECODE_ALLOC_FLAG, NULL, pvStructInfo, + &bytesNeeded); } } }