From: Qian Hong Subject: [PATCH] ole32: Fix OleDraw() with NULL pUnk. Message-Id: <50C0D9BD.8080002@gmail.com> Date: Fri, 07 Dec 2012 01:45:33 +0800 Fix Bug 32381. Thanks Bruno and Nikolay :) --- dlls/ole32/ole2.c | 2 ++ dlls/ole32/tests/ole2.c | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/dlls/ole32/ole2.c b/dlls/ole32/ole2.c index 4a36aec..1bd4c1a 100644 --- a/dlls/ole32/ole2.c +++ b/dlls/ole32/ole2.c @@ -2546,6 +2546,8 @@ HRESULT WINAPI OleDraw( HRESULT hres; IViewObject *viewobject; + if (!pUnk) return E_INVALIDARG; + hres = IUnknown_QueryInterface(pUnk, &IID_IViewObject, (void**)&viewobject); diff --git a/dlls/ole32/tests/ole2.c b/dlls/ole32/tests/ole2.c index eb8e6d3..27653c1 100644 --- a/dlls/ole32/tests/ole2.c +++ b/dlls/ole32/tests/ole2.c @@ -1934,9 +1934,16 @@ static void test_OleLockRunning(void) static void test_OleDraw(void) { HRESULT hr; + RECT rect; hr = OleDraw((IUnknown*)&viewobject, 0, (HDC)0x1, NULL); ok(hr == S_OK, "got 0x%08x\n", hr); + + hr = OleDraw(NULL, 0, (HDC)0x1, NULL); + ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + + hr = OleDraw(NULL, 0, (HDC)0x1, &rect); + ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); } START_TEST(ole2)