Nikolay Sivov : wbemdisp: Fix a crash on null interface pointer.

Alexandre Julliard julliard at winehq.org
Mon Jul 18 09:22:34 CDT 2016


Module: wine
Branch: master
Commit: 1fda7ca72e4a4d784950c0a4503f34a32d3b987b
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=1fda7ca72e4a4d784950c0a4503f34a32d3b987b

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Fri Jul 15 23:22:50 2016 +0300

wbemdisp: Fix a crash on null interface pointer.

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

---

 dlls/wbemdisp/locator.c        |  3 ++-
 dlls/wbemdisp/tests/wbemdisp.c | 14 ++++++++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/dlls/wbemdisp/locator.c b/dlls/wbemdisp/locator.c
index d1f2609..a8b1568 100644
--- a/dlls/wbemdisp/locator.c
+++ b/dlls/wbemdisp/locator.c
@@ -1224,7 +1224,8 @@ static ULONG WINAPI locator_Release(
     if (!refs)
     {
         TRACE( "destroying %p\n", locator );
-        IWbemLocator_Release( locator->locator );
+        if (locator->locator)
+            IWbemLocator_Release( locator->locator );
         heap_free( locator );
     }
     return refs;
diff --git a/dlls/wbemdisp/tests/wbemdisp.c b/dlls/wbemdisp/tests/wbemdisp.c
index e3d432b..3cc4c86 100644
--- a/dlls/wbemdisp/tests/wbemdisp.c
+++ b/dlls/wbemdisp/tests/wbemdisp.c
@@ -243,9 +243,23 @@ static void test_ParseDisplayName(void)
     IParseDisplayName_Release( displayname );
 }
 
+static void test_locator(void)
+{
+    IUnknown *locator;
+    HRESULT hr;
+
+    hr = CoCreateInstance( &CLSID_SWbemLocator, NULL, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void **)&locator );
+    ok( hr == S_OK, "got %x\n", hr );
+
+    IUnknown_Release( locator );
+}
+
 START_TEST(wbemdisp)
 {
     CoInitialize( NULL );
+
     test_ParseDisplayName();
+    test_locator();
+
     CoUninitialize();
 }




More information about the wine-cvs mailing list