=?UTF-8?Q?Stefan=20D=C3=B6singer=20?=: ddraw: Check for lpSurface= NULL in SetSurfaceDesc.

Alexandre Julliard julliard at winehq.org
Tue Dec 3 13:46:36 CST 2013


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

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Tue Dec  3 13:44:36 2013 +0100

ddraw: Check for lpSurface=NULL in SetSurfaceDesc.

---

 dlls/ddraw/surface.c      |    4 ++--
 dlls/ddraw/tests/ddraw2.c |    4 ++++
 dlls/ddraw/tests/ddraw4.c |    4 ++++
 dlls/ddraw/tests/ddraw7.c |    4 ++++
 4 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c
index 9966e50..dcff746 100644
--- a/dlls/ddraw/surface.c
+++ b/dlls/ddraw/surface.c
@@ -4259,9 +4259,9 @@ static HRESULT WINAPI ddraw_surface7_SetSurfaceDesc(IDirectDrawSurface7 *iface,
         WARN("Invalid flags (0x%08x) set, returning DDERR_INVALIDPARAMS\n", DDSD->dwFlags);
         return DDERR_INVALIDPARAMS;
     }
-    if (!(DDSD->dwFlags & DDSD_LPSURFACE))
+    if (!(DDSD->dwFlags & DDSD_LPSURFACE) || !DDSD->lpSurface)
     {
-        WARN("DDSD_LPSURFACE is not set, returning DDERR_INVALIDPARAMS\n");
+        WARN("DDSD_LPSURFACE is not set or lpSurface is NULL, returning DDERR_INVALIDPARAMS\n");
         return DDERR_INVALIDPARAMS;
     }
     if ((DDSD->dwFlags & DDSD_CAPS) && DDSD->ddsCaps.dwCaps)
diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c
index ff03207..209a473 100644
--- a/dlls/ddraw/tests/ddraw2.c
+++ b/dlls/ddraw/tests/ddraw2.c
@@ -4471,6 +4471,10 @@ static void test_set_surface_desc(void)
     hr = IDirectDrawSurface3_SetSurfaceDesc(surface3, &ddsd, 1);
     ok(hr == DDERR_INVALIDPARAMS, "SetSurfaceDesc with flags=1 returned %#x.\n", hr);
 
+    ddsd.lpSurface = NULL;
+    hr = IDirectDrawSurface3_SetSurfaceDesc(surface3, &ddsd, 0);
+    ok(hr == DDERR_INVALIDPARAMS, "Setting lpSurface=NULL returned %#x.\n", hr);
+
     hr = IDirectDrawSurface3_SetSurfaceDesc(surface3, NULL, 0);
     ok(hr == DDERR_INVALIDPARAMS, "SetSurfaceDesc with NULL desc returned %#x.\n", hr);
 
diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c
index cfc2ac4..e7beb3f 100644
--- a/dlls/ddraw/tests/ddraw4.c
+++ b/dlls/ddraw/tests/ddraw4.c
@@ -5072,6 +5072,10 @@ static void test_set_surface_desc(void)
     hr = IDirectDrawSurface4_SetSurfaceDesc(surface, &ddsd, 1);
     ok(hr == DDERR_INVALIDPARAMS, "SetSurfaceDesc with flags=1 returned %#x.\n", hr);
 
+    ddsd.lpSurface = NULL;
+    hr = IDirectDrawSurface4_SetSurfaceDesc(surface, &ddsd, 0);
+    ok(hr == DDERR_INVALIDPARAMS, "Setting lpSurface=NULL returned %#x.\n", hr);
+
     hr = IDirectDrawSurface4_SetSurfaceDesc(surface, NULL, 0);
     ok(hr == DDERR_INVALIDPARAMS, "SetSurfaceDesc with NULL desc returned %#x.\n", hr);
 
diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c
index 72e7f2e..76ff437 100644
--- a/dlls/ddraw/tests/ddraw7.c
+++ b/dlls/ddraw/tests/ddraw7.c
@@ -4959,6 +4959,10 @@ static void test_set_surface_desc(void)
     hr = IDirectDrawSurface7_SetSurfaceDesc(surface, &ddsd, 1);
     ok(hr == DDERR_INVALIDPARAMS, "SetSurfaceDesc with flags=1 returned %#x.\n", hr);
 
+    ddsd.lpSurface = NULL;
+    hr = IDirectDrawSurface7_SetSurfaceDesc(surface, &ddsd, 0);
+    ok(hr == DDERR_INVALIDPARAMS, "Setting lpSurface=NULL returned %#x.\n", hr);
+
     hr = IDirectDrawSurface7_SetSurfaceDesc(surface, NULL, 0);
     ok(hr == DDERR_INVALIDPARAMS, "SetSurfaceDesc with NULL desc returned %#x.\n", hr);
 




More information about the wine-cvs mailing list