Hans Leidekker : wbemprox: Avoid a crash when serializing object text.
Alexandre Julliard
julliard at winehq.org
Fri Nov 2 15:52:03 CDT 2012
Module: wine
Branch: master
Commit: 6955b09023a0c74af01ecd6a9434ccd58429ecb2
URL: http://source.winehq.org/git/wine.git/?a=commit;h=6955b09023a0c74af01ecd6a9434ccd58429ecb2
Author: Hans Leidekker <hans at codeweavers.com>
Date: Fri Nov 2 15:34:27 2012 +0100
wbemprox: Avoid a crash when serializing object text.
---
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 );
More information about the wine-cvs
mailing list