[PATCH 4/5] ddraw: Check for lpSurface=NULL in SetSurfaceDesc.
Stefan Dösinger
stefan at codeweavers.com
Tue Dec 3 06:44:36 CST 2013
---
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);
--
1.8.3.2
More information about the wine-patches
mailing list