Juan Lang : crypt32: Don't attempt to find the length of a NULL string ( valgrind).
Alexandre Julliard
julliard at winehq.org
Fri Feb 11 11:16:36 CST 2011
Module: wine
Branch: master
Commit: 9e6de30f8feb8eb0a5fbbfd88f34c7358f7d6e6b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=9e6de30f8feb8eb0a5fbbfd88f34c7358f7d6e6b
Author: Juan Lang <juan.lang at gmail.com>
Date: Thu Feb 10 08:52:21 2011 -0800
crypt32: Don't attempt to find the length of a NULL string (valgrind).
---
dlls/crypt32/encode.c | 48 ++++++++++++++++++++++++++++++++++++------------
1 files changed, 36 insertions(+), 12 deletions(-)
diff --git a/dlls/crypt32/encode.c b/dlls/crypt32/encode.c
index e14ff19..825eb44 100644
--- a/dlls/crypt32/encode.c
+++ b/dlls/crypt32/encode.c
@@ -1012,8 +1012,12 @@ static BOOL CRYPT_AsnEncodeUTF8String(const CERT_NAME_VALUE *value,
LPCWSTR str = (LPCWSTR)value->Value.pbData;
DWORD bytesNeeded, lenBytes, encodedLen, strLen;
- strLen = value->Value.cbData ? value->Value.cbData / sizeof(WCHAR) :
- strlenW(str);
+ if (value->Value.cbData)
+ strLen = value->Value.cbData / sizeof(WCHAR);
+ else if (str)
+ strLen = strlenW(str);
+ else
+ strLen = 0;
encodedLen = WideCharToMultiByte(CP_UTF8, 0, str, strLen, NULL, 0, NULL,
NULL);
CRYPT_EncodeLen(encodedLen, NULL, &lenBytes);
@@ -1992,8 +1996,12 @@ static BOOL CRYPT_AsnEncodeUnicodeStringCoerce(const CERT_NAME_VALUE *value,
LPCWSTR str = (LPCWSTR)value->Value.pbData;
DWORD bytesNeeded, lenBytes, encodedLen;
- encodedLen = value->Value.cbData ? value->Value.cbData / sizeof(WCHAR) :
- strlenW(str);
+ if (value->Value.cbData)
+ encodedLen = value->Value.cbData / sizeof(WCHAR);
+ else if (str)
+ encodedLen = strlenW(str);
+ else
+ encodedLen = 0;
CRYPT_EncodeLen(encodedLen, NULL, &lenBytes);
bytesNeeded = 1 + lenBytes + encodedLen;
if (!pbEncoded)
@@ -2025,8 +2033,12 @@ static BOOL CRYPT_AsnEncodeNumericString(const CERT_NAME_VALUE *value,
LPCWSTR str = (LPCWSTR)value->Value.pbData;
DWORD bytesNeeded, lenBytes, encodedLen;
- encodedLen = value->Value.cbData ? value->Value.cbData / sizeof(WCHAR) :
- strlenW(str);
+ if (value->Value.cbData)
+ encodedLen = value->Value.cbData / sizeof(WCHAR);
+ else if (str)
+ encodedLen = strlenW(str);
+ else
+ encodedLen = 0;
CRYPT_EncodeLen(encodedLen, NULL, &lenBytes);
bytesNeeded = 1 + lenBytes + encodedLen;
if (!pbEncoded)
@@ -2079,8 +2091,12 @@ static BOOL CRYPT_AsnEncodePrintableString(const CERT_NAME_VALUE *value,
LPCWSTR str = (LPCWSTR)value->Value.pbData;
DWORD bytesNeeded, lenBytes, encodedLen;
- encodedLen = value->Value.cbData ? value->Value.cbData / sizeof(WCHAR) :
- strlenW(str);
+ if (value->Value.cbData)
+ encodedLen = value->Value.cbData / sizeof(WCHAR);
+ else if (str)
+ encodedLen = strlenW(str);
+ else
+ encodedLen = 0;
CRYPT_EncodeLen(encodedLen, NULL, &lenBytes);
bytesNeeded = 1 + lenBytes + encodedLen;
if (!pbEncoded)
@@ -2126,8 +2142,12 @@ static BOOL CRYPT_AsnEncodeIA5String(const CERT_NAME_VALUE *value,
LPCWSTR str = (LPCWSTR)value->Value.pbData;
DWORD bytesNeeded, lenBytes, encodedLen;
- encodedLen = value->Value.cbData ? value->Value.cbData / sizeof(WCHAR) :
- strlenW(str);
+ if (value->Value.cbData)
+ encodedLen = value->Value.cbData / sizeof(WCHAR);
+ else if (str)
+ encodedLen = strlenW(str);
+ else
+ encodedLen = 0;
CRYPT_EncodeLen(encodedLen, NULL, &lenBytes);
bytesNeeded = 1 + lenBytes + encodedLen;
if (!pbEncoded)
@@ -2174,8 +2194,12 @@ static BOOL CRYPT_AsnEncodeUniversalString(const CERT_NAME_VALUE *value,
DWORD bytesNeeded, lenBytes, strLen;
/* FIXME: doesn't handle composite characters */
- strLen = value->Value.cbData ? value->Value.cbData / sizeof(WCHAR) :
- strlenW(str);
+ if (value->Value.cbData)
+ strLen = value->Value.cbData / sizeof(WCHAR);
+ else if (str)
+ strLen = strlenW(str);
+ else
+ strLen = 0;
CRYPT_EncodeLen(strLen * 4, NULL, &lenBytes);
bytesNeeded = 1 + lenBytes + strLen * 4;
if (!pbEncoded)
More information about the wine-cvs
mailing list