Module: wine Branch: master Commit: 159a369318ce4e0a1e9223bd92c6cdcf920bd40f URL: http://source.winehq.org/git/wine.git/?a=commit;h=159a369318ce4e0a1e9223bd92...
Author: Juan Lang juan.lang@gmail.com Date: Mon Sep 17 16:05:06 2007 -0700
crypt32: Set bytes decoded in all success paths.
---
dlls/crypt32/decode.c | 16 ++++++++-------- 1 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/dlls/crypt32/decode.c b/dlls/crypt32/decode.c index 67f79d5..7161058 100644 --- a/dlls/crypt32/decode.c +++ b/dlls/crypt32/decode.c @@ -457,6 +457,8 @@ static BOOL CRYPT_AsnDecodeSequence(DWORD dwCertEncodingType, bytesNeeded += items[i].size; structSize += items[i].minSize; } + if (ret && pcbDecoded) + *pcbDecoded = 1 + lenBytes + cbDecoded; if (!pvStructInfo) *pcbStructInfo = bytesNeeded; else if ((ret = CRYPT_DecodeEnsureSpace(dwFlags, @@ -474,8 +476,6 @@ static BOOL CRYPT_AsnDecodeSequence(DWORD dwCertEncodingType, ret = CRYPT_AsnDecodeSequenceItems(dwFlags, items, cItem, ptr, cbEncoded, dwFlags, pvStructInfo, nextData, &cbDecoded); - if (ret && pcbDecoded) - *pcbDecoded = 1 + lenBytes + cbDecoded; } } } @@ -601,6 +601,8 @@ static BOOL CRYPT_AsnDecodeArray(const struct AsnArrayDescriptor *arrayDesc, } if (ret) { + if (pcbDecoded) + *pcbDecoded = decoded; if (!pvStructInfo) *pcbStructInfo = bytesNeeded; else if ((ret = CRYPT_DecodeEnsureSpace(dwFlags, @@ -611,8 +613,6 @@ static BOOL CRYPT_AsnDecodeArray(const struct AsnArrayDescriptor *arrayDesc, const BYTE *ptr; struct GenericArray *array;
- if (pcbDecoded) - *pcbDecoded = decoded; if (dwFlags & CRYPT_DECODE_ALLOC_FLAG) pvStructInfo = *(BYTE **)pvStructInfo; array = (struct GenericArray *)pvStructInfo; @@ -1157,6 +1157,8 @@ static BOOL CRYPT_AsnDecodeOidIgnoreTag(const BYTE *pbEncoded, DWORD cbEncoded, } } } + if (pcbDecoded) + *pcbDecoded = 1 + lenBytes + dataLen; if (!pvStructInfo) *pcbStructInfo = bytesNeeded; else if (*pcbStructInfo < bytesNeeded) @@ -1198,8 +1200,6 @@ static BOOL CRYPT_AsnDecodeOidIgnoreTag(const BYTE *pbEncoded, DWORD cbEncoded, else *(LPSTR *)pvStructInfo = NULL; *pcbStructInfo = bytesNeeded; - if (pcbDecoded) - *pcbDecoded = 1 + lenBytes + dataLen; } } return ret; @@ -1837,6 +1837,8 @@ static BOOL CRYPT_AsnDecodeCopyBytesInternal(const BYTE *pbEncoded,
if (!(dwFlags & CRYPT_DECODE_NOCOPY_FLAG)) bytesNeeded += cbEncoded; + if (pcbDecoded) + *pcbDecoded = cbEncoded; if (!pvStructInfo) *pcbStructInfo = bytesNeeded; else if (*pcbStructInfo < bytesNeeded) @@ -1858,8 +1860,6 @@ static BOOL CRYPT_AsnDecodeCopyBytesInternal(const BYTE *pbEncoded, assert(blob->pbData); memcpy(blob->pbData, pbEncoded, blob->cbData); } - if (pcbDecoded) - *pcbDecoded = cbEncoded; } return ret; }