=?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