diff --git a/dlls/ole32/marshal.c b/dlls/ole32/marshal.c index fa458389418..a3ff04ee486 100644 --- a/dlls/ole32/marshal.c +++ b/dlls/ole32/marshal.c @@ -1815,6 +1815,7 @@ HRESULT WINAPI CoGetInterfaceAndReleaseStream(LPSTREAM pStm, REFIID riid, 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 4d0c5cd1d78..e99983a9f80 100644 --- a/dlls/ole32/tests/marshal.c +++ b/dlls/ole32/tests/marshal.c @@ -2253,6 +2253,15 @@ static void test_marshal_HENHMETAFILE(void) 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;