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