Hans Leidekker : wbemprox: Fix memory leaks on error paths.

Alexandre Julliard julliard at winehq.org
Fri Mar 5 15:31:16 CST 2021


Module: wine
Branch: master
Commit: 8c528d8d315afb3c0ebdc5149e3b6b41068286b4
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=8c528d8d315afb3c0ebdc5149e3b6b41068286b4

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Fri Mar  5 11:22:57 2021 +0100

wbemprox: Fix memory leaks on error paths.

Signed-off-by: Hans Leidekker <hans at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wbemprox/reg.c | 32 +++++++++++++++++++++++++++-----
 1 file changed, 27 insertions(+), 5 deletions(-)

diff --git a/dlls/wbemprox/reg.c b/dlls/wbemprox/reg.c
index edcdb1902f1..e5a45b1b600 100644
--- a/dlls/wbemprox/reg.c
+++ b/dlls/wbemprox/reg.c
@@ -430,7 +430,11 @@ HRESULT reg_get_stringvalue( IWbemClassObject *obj, IWbemContext *context, IWbem
     hr = IWbemClassObject_Get( in, L"sSubKeyName", 0, &subkey, NULL, NULL );
     if (hr != S_OK) return hr;
     hr = IWbemClassObject_Get( in, L"sValueName", 0, &name, NULL, NULL );
-    if (hr != S_OK) return hr;
+    if (hr != S_OK)
+    {
+        VariantClear( &subkey );
+        return hr;
+    }
 
     hr = create_signature( L"StdRegProv", L"GetStringValue", PARAM_OUT, &sig );
     if (hr != S_OK)
@@ -508,9 +512,18 @@ HRESULT reg_set_stringvalue( IWbemClassObject *obj, IWbemContext *context, IWbem
     hr = IWbemClassObject_Get( in, L"sSubKeyName", 0, &subkey, NULL, NULL );
     if (hr != S_OK) return hr;
     hr = IWbemClassObject_Get( in, L"sValueName", 0, &name, NULL, NULL );
-    if (hr != S_OK) return hr;
+    if (hr != S_OK)
+    {
+        VariantClear( &subkey );
+        return hr;
+    }
     hr = IWbemClassObject_Get( in, L"sValue", 0, &value, NULL, NULL );
-    if (hr != S_OK) return hr;
+    if (hr != S_OK)
+    {
+        VariantClear( &name );
+        VariantClear( &subkey );
+        return hr;
+    }
 
     hr = create_signature( L"StdRegProv", L"SetStringValue", PARAM_OUT, &sig );
     if (hr != S_OK)
@@ -582,9 +595,18 @@ HRESULT reg_set_dwordvalue( IWbemClassObject *obj, IWbemContext *context, IWbemC
     hr = IWbemClassObject_Get( in, L"sSubKeyName", 0, &subkey, NULL, NULL );
     if (hr != S_OK) return hr;
     hr = IWbemClassObject_Get( in, L"sValueName", 0, &name, NULL, NULL );
-    if (hr != S_OK) return hr;
+    if (hr != S_OK)
+    {
+        VariantClear( &subkey );
+        return hr;
+    }
     hr = IWbemClassObject_Get( in, L"uValue", 0, &value, NULL, NULL );
-    if (hr != S_OK) return hr;
+    if (hr != S_OK)
+    {
+        VariantClear( &name );
+        VariantClear( &subkey );
+        return hr;
+    }
 
     hr = create_signature( L"StdRegProv", L"SetDWORDValue", PARAM_OUT, &sig );
     if (hr != S_OK)




More information about the wine-cvs mailing list