From 248b62a3320742724599081a785b3502634d5fb5 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Sat, 31 Aug 2024 11:12:39 +0200 Subject: [PATCH] add NULL checks to QueryInterface --- src/IDirectDraw/IDirectDraw.c | 6 +++++- src/IDirectDraw/IDirectDrawClipper.c | 6 ++++++ src/IDirectDraw/IDirectDrawGammaControl.c | 6 ++++++ src/IDirectDraw/IDirectDrawPalette.c | 6 ++++++ src/IDirectDraw/IDirectDrawSurface.c | 6 +++++- 5 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/IDirectDraw/IDirectDraw.c b/src/IDirectDraw/IDirectDraw.c index c104800..7bff5f0 100644 --- a/src/IDirectDraw/IDirectDraw.c +++ b/src/IDirectDraw/IDirectDraw.c @@ -18,7 +18,11 @@ HRESULT __stdcall IDirectDraw__QueryInterface(IDirectDrawImpl* This, REFIID riid HRESULT ret = E_NOINTERFACE; - if (riid) + if (!ppvObj) + { + ret = E_INVALIDARG; + } + else if (riid) { if (IsEqualGUID(&IID_IDirectDraw2, riid) || IsEqualGUID(&IID_IDirectDraw4, riid) || diff --git a/src/IDirectDraw/IDirectDrawClipper.c b/src/IDirectDraw/IDirectDrawClipper.c index 86b8a2f..6270c09 100644 --- a/src/IDirectDraw/IDirectDrawClipper.c +++ b/src/IDirectDraw/IDirectDrawClipper.c @@ -14,6 +14,12 @@ HRESULT __stdcall IDirectDrawClipper__QueryInterface(IDirectDrawClipperImpl* Thi _ReturnAddress()); HRESULT ret = E_NOINTERFACE; + + if (!ppvObj) + { + ret = E_INVALIDARG; + } + TRACE("NOT_IMPLEMENTED <- %s\n", __FUNCTION__); return ret; } diff --git a/src/IDirectDraw/IDirectDrawGammaControl.c b/src/IDirectDraw/IDirectDrawGammaControl.c index 65f61fa..d0bd36a 100644 --- a/src/IDirectDraw/IDirectDrawGammaControl.c +++ b/src/IDirectDraw/IDirectDrawGammaControl.c @@ -13,6 +13,12 @@ HRESULT __stdcall IDirectDrawGammaControl__QueryInterface(IDirectDrawGammaContro _ReturnAddress()); HRESULT ret = E_NOINTERFACE; + + if (!ppvObj) + { + ret = E_INVALIDARG; + } + TRACE("NOT_IMPLEMENTED <- %s\n", __FUNCTION__); return ret; } diff --git a/src/IDirectDraw/IDirectDrawPalette.c b/src/IDirectDraw/IDirectDrawPalette.c index a5429ea..0a6334a 100644 --- a/src/IDirectDraw/IDirectDrawPalette.c +++ b/src/IDirectDraw/IDirectDrawPalette.c @@ -15,6 +15,12 @@ HRESULT __stdcall IDirectDrawPalette__QueryInterface(IDirectDrawPaletteImpl* Thi _ReturnAddress()); HRESULT ret = E_NOINTERFACE; + + if (!ppvObj) + { + ret = E_INVALIDARG; + } + TRACE("NOT_IMPLEMENTED <- %s\n", __FUNCTION__); return ret; } diff --git a/src/IDirectDraw/IDirectDrawSurface.c b/src/IDirectDraw/IDirectDrawSurface.c index 8984571..3eec3e6 100644 --- a/src/IDirectDraw/IDirectDrawSurface.c +++ b/src/IDirectDraw/IDirectDrawSurface.c @@ -11,7 +11,11 @@ HRESULT __stdcall IDirectDrawSurface__QueryInterface(IDirectDrawSurfaceImpl* Thi TRACE("-> %s(This=%p, riid=%08X, ppvObj=%p) [%p]\n", __FUNCTION__, This, (unsigned int)riid, ppvObj, _ReturnAddress()); HRESULT ret = S_OK; - if (riid) + if (!ppvObj) + { + ret = E_INVALIDARG; + } + else if (riid) { if (IsEqualGUID(&IID_IDirectDrawSurface, riid) || IsEqualGUID(&IID_IDirectDrawSurface2, riid) ||