crypt32: Use decode function's returned decoded length to advance pointer when decoding an array.

This commit is contained in:
Juan Lang 2007-09-17 18:02:26 -07:00 committed by Alexandre Julliard
parent ee28204fcf
commit 0bd29b1243
1 changed files with 4 additions and 7 deletions

View File

@ -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;
}
}
}