From 78561f3eb3a434bc8542993263abe6664365fb0b Mon Sep 17 00:00:00 2001
From: Francois Gouget <fgouget@codeweavers.com>
Date: Fri, 13 Dec 2002 20:26:23 +0000
Subject: [PATCH] IDirectSoundBuffer.GetCaps should fail if caps.dwSize is not
 set.

---
 dlls/dsound/buffer.c  | 6 +-----
 dlls/dsound/primary.c | 6 +-----
 2 files changed, 2 insertions(+), 10 deletions(-)

diff --git a/dlls/dsound/buffer.c b/dlls/dsound/buffer.c
index 1adb6c9728c..2891cc51e40 100644
--- a/dlls/dsound/buffer.c
+++ b/dlls/dsound/buffer.c
@@ -766,13 +766,9 @@ static HRESULT WINAPI IDirectSoundBufferImpl_GetCaps(
 	ICOM_THIS(IDirectSoundBufferImpl,iface);
   	TRACE("(%p)->(%p)\n",This,caps);
 
-	if (caps == NULL)
+	if (caps == NULL || caps->dwSize!=sizeof(*caps))
 		return DSERR_INVALIDPARAM;
 
-	/* I think we should check this value, not set it. See */
-	/* Inside DirectX, p215. That should apply here, too. */
-	caps->dwSize = sizeof(*caps);
-
 	caps->dwFlags = This->dsbd.dwFlags;
 	if (This->hwbuf) caps->dwFlags |= DSBCAPS_LOCHARDWARE;
 	else caps->dwFlags |= DSBCAPS_LOCSOFTWARE;
diff --git a/dlls/dsound/primary.c b/dlls/dsound/primary.c
index fc28794fd36..7cb438d2a67 100644
--- a/dlls/dsound/primary.c
+++ b/dlls/dsound/primary.c
@@ -754,13 +754,9 @@ static HRESULT WINAPI PrimaryBufferImpl_GetCaps(
 	ICOM_THIS(PrimaryBufferImpl,iface);
   	TRACE("(%p)->(%p)\n",This,caps);
 
-	if (caps == NULL)
+	if (caps == NULL || caps->dwSize!=sizeof(*caps))
 		return DSERR_INVALIDPARAM;
 
-	/* I think we should check this value, not set it. See */
-	/* Inside DirectX, p215. That should apply here, too. */
-	caps->dwSize = sizeof(*caps);
-
 	caps->dwFlags = This->dsbd.dwFlags;
 	if (This->dsound->hwbuf) caps->dwFlags |= DSBCAPS_LOCHARDWARE;
 	else caps->dwFlags |= DSBCAPS_LOCSOFTWARE;
-- 
GitLab