From 0bd29b124310e9797f66ddd162f574ecad237e99 Mon Sep 17 00:00:00 2001 From: Juan Lang Date: Mon, 17 Sep 2007 18:02:26 -0700 Subject: [PATCH] crypt32: Use decode function's returned decoded length to advance pointer when decoding an array. --- dlls/crypt32/decode.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/dlls/crypt32/decode.c b/dlls/crypt32/decode.c index caf34cbcbf..082c28af92 100644 --- a/dlls/crypt32/decode.c +++ b/dlls/crypt32/decode.c @@ -709,6 +709,8 @@ static BOOL CRYPT_AsnDecodeArray(const struct AsnArrayDescriptor *arrayDesc, i < cItems && ptr - pbEncoded - 1 - lenBytes < dataLen; i++) { + DWORD itemDecoded; + if (arrayDesc->hasPointer) *(BYTE **)(array->rgItems + i * arrayDesc->itemSize + arrayDesc->pointerOffset) = nextData; @@ -716,16 +718,11 @@ static BOOL CRYPT_AsnDecodeArray(const struct AsnArrayDescriptor *arrayDesc, itemSizes[i].encodedLen, dwFlags & ~CRYPT_DECODE_ALLOC_FLAG, array->rgItems + i * arrayDesc->itemSize, - &itemSizes[i].size, NULL); + &itemSizes[i].size, &itemDecoded); if (ret) { - DWORD nextLen; - nextData += itemSizes[i].size - arrayDesc->itemSize; - ret = CRYPT_GetLen(ptr, - cbEncoded - (ptr - pbEncoded), &nextLen); - if (ret) - ptr += nextLen + 1 + GET_LEN_BYTES(ptr[1]); + ptr += itemDecoded; } } }