Alexandre Julliard : crypt32: Fix a couple of assumptions about structure layout.
Alexandre Julliard
julliard at winehq.org
Mon Jun 22 09:04:20 CDT 2009
Module: wine
Branch: master
Commit: d5d3efd592e55f1f3c4de9f24488128a35d59cb3
URL: http://source.winehq.org/git/wine.git/?a=commit;h=d5d3efd592e55f1f3c4de9f24488128a35d59cb3
Author: Alexandre Julliard <julliard at winehq.org>
Date: Mon Jun 22 14:53:24 2009 +0200
crypt32: Fix a couple of assumptions about structure layout.
---
dlls/crypt32/decode.c | 2 +-
dlls/crypt32/encode.c | 11 +++++------
2 files changed, 6 insertions(+), 7 deletions(-)
diff --git a/dlls/crypt32/decode.c b/dlls/crypt32/decode.c
index 2c2b543..7a33e6a 100644
--- a/dlls/crypt32/decode.c
+++ b/dlls/crypt32/decode.c
@@ -523,7 +523,7 @@ static BOOL CRYPT_AsnDecodeSequence(struct AsnDecodeSequenceItem items[],
for (i = 0; i < cItem; i++)
{
bytesNeeded += items[i].size;
- structSize += items[i].minSize;
+ structSize = max( structSize, items[i].offset + items[i].minSize );
}
if (pcbDecoded)
*pcbDecoded = 1 + lenBytes + cbDecoded;
diff --git a/dlls/crypt32/encode.c b/dlls/crypt32/encode.c
index 67a0155..258384c 100644
--- a/dlls/crypt32/encode.c
+++ b/dlls/crypt32/encode.c
@@ -564,13 +564,12 @@ static BOOL WINAPI CRYPT_AsnEncodeCRLEntries(DWORD dwCertEncodingType,
LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags,
PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
{
- DWORD cCRLEntry = *(const DWORD *)pvStructInfo;
DWORD bytesNeeded, dataLen, lenBytes, i;
- const CRL_ENTRY *rgCRLEntry = *(const CRL_ENTRY *const *)
- ((const BYTE *)pvStructInfo + sizeof(DWORD));
+ const CRL_INFO *info = pvStructInfo;
+ const CRL_ENTRY *rgCRLEntry = info->rgCRLEntry;
BOOL ret = TRUE;
- for (i = 0, dataLen = 0; ret && i < cCRLEntry; i++)
+ for (i = 0, dataLen = 0; ret && i < info->cCRLEntry; i++)
{
DWORD size;
@@ -594,7 +593,7 @@ static BOOL WINAPI CRYPT_AsnEncodeCRLEntries(DWORD dwCertEncodingType,
*pbEncoded++ = ASN_SEQUENCEOF;
CRYPT_EncodeLen(dataLen, pbEncoded, &lenBytes);
pbEncoded += lenBytes;
- for (i = 0; i < cCRLEntry; i++)
+ for (i = 0; i < info->cCRLEntry; i++)
{
DWORD size = dataLen;
@@ -659,7 +658,7 @@ static BOOL WINAPI CRYPT_AsnEncodeCRLInfo(DWORD dwCertEncodingType,
}
if (info->cCRLEntry)
{
- items[cItem].pvStructInfo = &info->cCRLEntry;
+ items[cItem].pvStructInfo = info;
items[cItem].encodeFunc = CRYPT_AsnEncodeCRLEntries;
cItem++;
}
More information about the wine-cvs
mailing list