Juan Lang : crypt32: Set bytes decoded in all success paths.
Alexandre Julliard
julliard at winehq.org
Tue Sep 18 05:31:21 CDT 2007
Module: wine
Branch: master
Commit: 159a369318ce4e0a1e9223bd92c6cdcf920bd40f
URL: http://source.winehq.org/git/wine.git/?a=commit;h=159a369318ce4e0a1e9223bd92c6cdcf920bd40f
Author: Juan Lang <juan.lang at 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;
}
More information about the wine-cvs
mailing list