Module: wine Branch: master Commit: 5e43ee256c03e7703a91913192a54014acdec361 URL: http://source.winehq.org/git/wine.git/?a=commit;h=5e43ee256c03e7703a91913192...
Author: Stefan Dösinger stefan@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);