Juan Lang : crypt32: Don't ignore errors when encoding items in an array.
Alexandre Julliard
julliard at winehq.org
Thu Aug 28 07:00:24 CDT 2008
Module: wine
Branch: master
Commit: 2d02ec7488bf1fb08e05a59afd369a39efbe2f2e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2d02ec7488bf1fb08e05a59afd369a39efbe2f2e
Author: Juan Lang <juan.lang at gmail.com>
Date: Wed Aug 27 11:02:13 2008 -0700
crypt32: Don't ignore errors when encoding items in an array.
---
dlls/crypt32/encode.c | 118 ++++++++++++++++++++++++++----------------------
1 files changed, 64 insertions(+), 54 deletions(-)
diff --git a/dlls/crypt32/encode.c b/dlls/crypt32/encode.c
index 0bcdad8..addd718 100644
--- a/dlls/crypt32/encode.c
+++ b/dlls/crypt32/encode.c
@@ -578,27 +578,31 @@ static BOOL WINAPI CRYPT_AsnEncodeCRLEntries(DWORD dwCertEncodingType,
if (ret)
dataLen += size;
}
- CRYPT_EncodeLen(dataLen, NULL, &lenBytes);
- bytesNeeded = 1 + lenBytes + dataLen;
- if (!pbEncoded)
- *pcbEncoded = bytesNeeded;
- else
+ if (ret)
{
- if ((ret = CRYPT_EncodeEnsureSpace(dwFlags, pEncodePara, pbEncoded,
- pcbEncoded, bytesNeeded)))
+ CRYPT_EncodeLen(dataLen, NULL, &lenBytes);
+ bytesNeeded = 1 + lenBytes + dataLen;
+ if (!pbEncoded)
+ *pcbEncoded = bytesNeeded;
+ else
{
- if (dwFlags & CRYPT_ENCODE_ALLOC_FLAG)
- pbEncoded = *(BYTE **)pbEncoded;
- *pbEncoded++ = ASN_SEQUENCEOF;
- CRYPT_EncodeLen(dataLen, pbEncoded, &lenBytes);
- pbEncoded += lenBytes;
- for (i = 0; i < cCRLEntry; i++)
+ if ((ret = CRYPT_EncodeEnsureSpace(dwFlags, pEncodePara, pbEncoded,
+ pcbEncoded, bytesNeeded)))
{
- DWORD size = dataLen;
+ if (dwFlags & CRYPT_ENCODE_ALLOC_FLAG)
+ pbEncoded = *(BYTE **)pbEncoded;
+ *pbEncoded++ = ASN_SEQUENCEOF;
+ CRYPT_EncodeLen(dataLen, pbEncoded, &lenBytes);
+ pbEncoded += lenBytes;
+ for (i = 0; i < cCRLEntry; i++)
+ {
+ DWORD size = dataLen;
- ret = CRYPT_AsnEncodeCRLEntry(&rgCRLEntry[i], pbEncoded, &size);
- pbEncoded += size;
- dataLen -= size;
+ ret = CRYPT_AsnEncodeCRLEntry(&rgCRLEntry[i], pbEncoded,
+ &size);
+ pbEncoded += size;
+ dataLen -= size;
+ }
}
}
}
@@ -731,28 +735,31 @@ static BOOL WINAPI CRYPT_AsnEncodeExtensions(DWORD dwCertEncodingType,
if (ret)
dataLen += size;
}
- CRYPT_EncodeLen(dataLen, NULL, &lenBytes);
- bytesNeeded = 1 + lenBytes + dataLen;
- if (!pbEncoded)
- *pcbEncoded = bytesNeeded;
- else
+ if (ret)
{
- if ((ret = CRYPT_EncodeEnsureSpace(dwFlags, pEncodePara, pbEncoded,
- pcbEncoded, bytesNeeded)))
+ CRYPT_EncodeLen(dataLen, NULL, &lenBytes);
+ bytesNeeded = 1 + lenBytes + dataLen;
+ if (!pbEncoded)
+ *pcbEncoded = bytesNeeded;
+ else
{
- if (dwFlags & CRYPT_ENCODE_ALLOC_FLAG)
- pbEncoded = *(BYTE **)pbEncoded;
- *pbEncoded++ = ASN_SEQUENCEOF;
- CRYPT_EncodeLen(dataLen, pbEncoded, &lenBytes);
- pbEncoded += lenBytes;
- for (i = 0; i < exts->cExtension; i++)
+ if ((ret = CRYPT_EncodeEnsureSpace(dwFlags, pEncodePara,
+ pbEncoded, pcbEncoded, bytesNeeded)))
{
- DWORD size = dataLen;
+ if (dwFlags & CRYPT_ENCODE_ALLOC_FLAG)
+ pbEncoded = *(BYTE **)pbEncoded;
+ *pbEncoded++ = ASN_SEQUENCEOF;
+ CRYPT_EncodeLen(dataLen, pbEncoded, &lenBytes);
+ pbEncoded += lenBytes;
+ for (i = 0; i < exts->cExtension; i++)
+ {
+ DWORD size = dataLen;
- ret = CRYPT_AsnEncodeExtension(&exts->rgExtension[i],
- pbEncoded, &size);
- pbEncoded += size;
- dataLen -= size;
+ ret = CRYPT_AsnEncodeExtension(&exts->rgExtension[i],
+ pbEncoded, &size);
+ pbEncoded += size;
+ dataLen -= size;
+ }
}
}
}
@@ -1459,29 +1466,32 @@ static BOOL WINAPI CRYPT_AsnEncodeSMIMECapabilities(DWORD dwCertEncodingType,
if (ret)
dataLen += size;
}
- CRYPT_EncodeLen(dataLen, NULL, &lenBytes);
- bytesNeeded = 1 + lenBytes + dataLen;
- if (!pbEncoded)
- *pcbEncoded = bytesNeeded;
- else
+ if (ret)
{
- if ((ret = CRYPT_EncodeEnsureSpace(dwFlags, pEncodePara, pbEncoded,
- pcbEncoded, bytesNeeded)))
+ CRYPT_EncodeLen(dataLen, NULL, &lenBytes);
+ bytesNeeded = 1 + lenBytes + dataLen;
+ if (!pbEncoded)
+ *pcbEncoded = bytesNeeded;
+ else
{
- if (dwFlags & CRYPT_ENCODE_ALLOC_FLAG)
- pbEncoded = *(BYTE **)pbEncoded;
- *pbEncoded++ = ASN_SEQUENCEOF;
- CRYPT_EncodeLen(dataLen, pbEncoded, &lenBytes);
- pbEncoded += lenBytes;
- for (i = 0; i < capabilities->cCapability; i++)
+ if ((ret = CRYPT_EncodeEnsureSpace(dwFlags, pEncodePara,
+ pbEncoded, pcbEncoded, bytesNeeded)))
{
- DWORD size = dataLen;
+ if (dwFlags & CRYPT_ENCODE_ALLOC_FLAG)
+ pbEncoded = *(BYTE **)pbEncoded;
+ *pbEncoded++ = ASN_SEQUENCEOF;
+ CRYPT_EncodeLen(dataLen, pbEncoded, &lenBytes);
+ pbEncoded += lenBytes;
+ for (i = 0; i < capabilities->cCapability; i++)
+ {
+ DWORD size = dataLen;
- ret = CRYPT_AsnEncodeSMIMECapability(dwCertEncodingType,
- NULL, &capabilities->rgCapability[i], 0, NULL, pbEncoded,
- &size);
- pbEncoded += size;
- dataLen -= size;
+ ret = CRYPT_AsnEncodeSMIMECapability(dwCertEncodingType,
+ NULL, &capabilities->rgCapability[i], 0, NULL,
+ pbEncoded, &size);
+ pbEncoded += size;
+ dataLen -= size;
+ }
}
}
}
More information about the wine-cvs
mailing list