wbemprox: Avoid a crash when serializing object text.

Hans Leidekker hans at codeweavers.com
Fri Nov 2 09:34:27 CDT 2012


---
 dlls/wbemprox/class.c |   20 ++++++++++++--------
 dlls/wbemprox/table.c |    1 +
 2 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/dlls/wbemprox/class.c b/dlls/wbemprox/class.c
index 75bd612..994e76b 100644
--- a/dlls/wbemprox/class.c
+++ b/dlls/wbemprox/class.c
@@ -568,19 +568,23 @@ static BSTR get_body_text( const struct table *table, UINT row, UINT *len )
     *len = 0;
     for (i = 0; i < table->num_cols; i++)
     {
-        *len += sizeof(fmtW) / sizeof(fmtW[0]);
-        *len += strlenW( table->columns[i].name );
-        value = get_value_bstr( table, row, i );
-        *len += SysStringLen( value );
-        SysFreeString( value );
+        if ((value = get_value_bstr( table, row, i )))
+        {
+            *len += sizeof(fmtW) / sizeof(fmtW[0]);
+            *len += strlenW( table->columns[i].name );
+            *len += SysStringLen( value );
+            SysFreeString( value );
+        }
     }
     if (!(ret = SysAllocStringLen( NULL, *len ))) return NULL;
     p = ret;
     for (i = 0; i < table->num_cols; i++)
     {
-        value = get_value_bstr( table, row, i );
-        p += sprintfW( p, fmtW, table->columns[i].name, value );
-        SysFreeString( value );
+        if ((value = get_value_bstr( table, row, i )))
+        {
+            p += sprintfW( p, fmtW, table->columns[i].name, value );
+            SysFreeString( value );
+        }
     }
     return ret;
 }
diff --git a/dlls/wbemprox/table.c b/dlls/wbemprox/table.c
index 43ab91d..c114e53 100644
--- a/dlls/wbemprox/table.c
+++ b/dlls/wbemprox/table.c
@@ -166,6 +166,7 @@ BSTR get_value_bstr( const struct table *table, UINT row, UINT column )
 
     case CIM_DATETIME:
     case CIM_STRING:
+        if (!val) return NULL;
         len = strlenW( (const WCHAR *)(INT_PTR)val ) + 2;
         if (!(ret = SysAllocStringLen( NULL, len ))) return NULL;
         sprintfW( ret, fmt_strW, (const WCHAR *)(INT_PTR)val );
-- 
1.7.10.4






More information about the wine-patches mailing list