Module: wine Branch: master Commit: 2d02ec7488bf1fb08e05a59afd369a39efbe2f2e URL: http://source.winehq.org/git/wine.git/?a=commit;h=2d02ec7488bf1fb08e05a59afd...
Author: Juan Lang juan.lang@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; + } } } }