Huw Davies : ole32: CoGetInterfaceAndReleaseStream shouldn' t crash when passed a NULL stream.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Nov 22 05:21:15 CST 2006


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

Author: Huw Davies <huw at codeweavers.com>
Date:   Tue Nov 21 20:40:37 2006 +0000

ole32: CoGetInterfaceAndReleaseStream shouldn't crash when passed a NULL stream.

---

 dlls/ole32/marshal.c       |    1 +
 dlls/ole32/tests/marshal.c |   11 +++++++++++
 2 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/dlls/ole32/marshal.c b/dlls/ole32/marshal.c
index fa45838..a3ff04e 100644
--- a/dlls/ole32/marshal.c
+++ b/dlls/ole32/marshal.c
@@ -1815,6 +1815,7 @@ HRESULT WINAPI CoGetInterfaceAndReleaseS
 
     TRACE("(%p, %s, %p)\n", pStm, debugstr_guid(riid), ppv);
 
+    if(!pStm) return E_INVALIDARG;
     hres = CoUnmarshalInterface(pStm, riid, ppv);
     IStream_Release(pStm);
     return hres;
diff --git a/dlls/ole32/tests/marshal.c b/dlls/ole32/tests/marshal.c
index 4d0c5cd..e99983a 100644
--- a/dlls/ole32/tests/marshal.c
+++ b/dlls/ole32/tests/marshal.c
@@ -2253,6 +2253,15 @@ static void test_marshal_HENHMETAFILE(vo
     HENHMETAFILE_UserFree(&flags, &hemf2);
 }
 
+static void test_CoGetInterfaceAndReleaseStream(void)
+{
+    HRESULT hr;
+    IUnknown *pUnk;
+
+    hr = CoGetInterfaceAndReleaseStream(NULL, &IID_IUnknown, (void**)&pUnk);
+    ok(hr == E_INVALIDARG, "hr %08x\n", hr);
+}
+
 START_TEST(marshal)
 {
     WNDCLASS wndclass;
@@ -2313,6 +2322,8 @@ START_TEST(marshal)
     test_marshal_HGLOBAL();
     test_marshal_HENHMETAFILE();
 
+    test_CoGetInterfaceAndReleaseStream();
+
     CoUninitialize();
     return;
 




More information about the wine-cvs mailing list