Module: wine Branch: master Commit: f534a67bfc59d3b8b74d69cfcc4e60411f293104 URL: http://source.winehq.org/git/wine.git/?a=commit;h=f534a67bfc59d3b8b74d69cfcc...
Author: Juan Lang juan.lang@gmail.com Date: Mon Sep 17 17:27:12 2007 -0700
crypt32: Simplify AsnDecodeSequenceItems a tiny bit.
---
dlls/crypt32/decode.c | 42 +++++++++++++++++++++--------------------- 1 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/dlls/crypt32/decode.c b/dlls/crypt32/decode.c index 0de2e6a..1e63183 100644 --- a/dlls/crypt32/decode.c +++ b/dlls/crypt32/decode.c @@ -308,15 +308,21 @@ static BOOL CRYPT_AsnDecodeSequenceItems(struct AsnDecodeSequenceItem items[], { if (cbEncoded - (ptr - pbEncoded) != 0) { - DWORD nextItemLen; + DWORD itemLen;
if ((ret = CRYPT_GetLengthIndefinite(ptr, - cbEncoded - (ptr - pbEncoded), &nextItemLen))) + cbEncoded - (ptr - pbEncoded), &itemLen))) { - BYTE nextItemLenBytes = GET_LEN_BYTES(ptr[1]); + BYTE itemLenBytes = GET_LEN_BYTES(ptr[1]);
if (ptr[0] == items[i].tag || !items[i].tag) { + DWORD itemEncodedLen; + + if (itemLen == CMSG_INDEFINITE_LENGTH) + itemEncodedLen = cbEncoded - (ptr - pbEncoded); + else + itemEncodedLen = 1 + itemLenBytes + itemLen; if (nextData && pvStructInfo && items[i].hasPointer) { TRACE("Setting next pointer to %p\n", @@ -326,21 +332,16 @@ static BOOL CRYPT_AsnDecodeSequenceItems(struct AsnDecodeSequenceItem items[], } if (items[i].decodeFunc) { - DWORD nextItemEncodedLen, nextItemDecoded; + DWORD itemDecoded;
- if (nextItemLen == CMSG_INDEFINITE_LENGTH) - nextItemEncodedLen = cbEncoded - (ptr - pbEncoded); - else - nextItemEncodedLen = 1 + nextItemLenBytes + - nextItemLen; if (pvStructInfo) TRACE("decoding item %d\n", i); else TRACE("sizing item %d\n", i); - ret = items[i].decodeFunc(ptr, nextItemEncodedLen, + ret = items[i].decodeFunc(ptr, itemEncodedLen, dwFlags & ~CRYPT_DECODE_ALLOC_FLAG, pvStructInfo ? (BYTE *)pvStructInfo + items[i].offset - : NULL, &items[i].size, &nextItemDecoded); + : NULL, &items[i].size, &itemDecoded); if (ret) { /* Account for alignment padding */ @@ -351,19 +352,19 @@ static BOOL CRYPT_AsnDecodeSequenceItems(struct AsnDecodeSequenceItem items[], if (nextData && items[i].hasPointer && items[i].size > items[i].minSize) nextData += items[i].size - items[i].minSize; - if (nextItemDecoded > nextItemEncodedLen) + if (itemDecoded > itemEncodedLen) { WARN("decoded length %d exceeds encoded %d\n", - nextItemDecoded, nextItemEncodedLen); + itemDecoded, itemEncodedLen); SetLastError(CRYPT_E_ASN1_CORRUPT); ret = FALSE; } else { - ptr += nextItemDecoded; - decoded += nextItemDecoded; + ptr += itemDecoded; + decoded += itemDecoded; TRACE("item %d: decoded %d bytes\n", i, - nextItemDecoded); + itemDecoded); } } else if (items[i].optional && @@ -378,7 +379,7 @@ static BOOL CRYPT_AsnDecodeSequenceItems(struct AsnDecodeSequenceItem items[], TRACE("item %d failed: %08x\n", i, GetLastError()); } - else if (nextItemLen == CMSG_INDEFINITE_LENGTH) + else if (itemLen == CMSG_INDEFINITE_LENGTH) { ERR("can't use indefinite length encoding without a decoder\n"); SetLastError(CRYPT_E_ASN1_CORRUPT); @@ -386,10 +387,9 @@ static BOOL CRYPT_AsnDecodeSequenceItems(struct AsnDecodeSequenceItem items[], } else { - TRACE("item %d: decoded %d bytes\n", i, - 1 + nextItemLenBytes + nextItemLen); - ptr += 1 + nextItemLenBytes + nextItemLen; - decoded += 1 + nextItemLenBytes + nextItemLen; + TRACE("item %d: decoded %d bytes\n", i, itemEncodedLen); + ptr += itemEncodedLen; + decoded += itemEncodedLen; items[i].size = items[i].minSize; } }