Juan Lang : crypt32: Simplify AsnDecodeSequenceItems a tiny bit.
Alexandre Julliard
julliard at winehq.org
Tue Sep 18 05:31:32 CDT 2007
Module: wine
Branch: master
Commit: f534a67bfc59d3b8b74d69cfcc4e60411f293104
URL: http://source.winehq.org/git/wine.git/?a=commit;h=f534a67bfc59d3b8b74d69cfcc4e60411f293104
Author: Juan Lang <juan.lang at 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;
}
}
More information about the wine-cvs
mailing list