Bruno Jesus : dinput: Do not read/ write past the struct for old DX versions.

Alexandre Julliard julliard at winehq.org
Tue Aug 23 11:28:44 CDT 2016


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

Author: Bruno Jesus <00cpxxx at gmail.com>
Date:   Mon Aug 22 22:06:57 2016 -0300

dinput: Do not read/write past the struct for old DX versions.

Based on ideas by Elias Vanderstuyft.

Signed-off-by: Bruno Jesus <00cpxxx at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/dinput/effect_linuxinput.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/dlls/dinput/effect_linuxinput.c b/dlls/dinput/effect_linuxinput.c
index 2f3399d..642dfc0 100644
--- a/dlls/dinput/effect_linuxinput.c
+++ b/dlls/dinput/effect_linuxinput.c
@@ -329,9 +329,8 @@ static HRESULT WINAPI LinuxInputEffectImpl_GetParameters(
     	peff->dwSamplePeriod = 0;
     }
 
-    if (dwFlags & DIEP_STARTDELAY) {
-	peff->dwStartDelay = This->effect.replay.delay * 1000;
-    }
+    if ((dwFlags & DIEP_STARTDELAY) && peff->dwSize > sizeof(DIEFFECT_DX5))
+        peff->dwStartDelay = This->effect.replay.delay * 1000;
 
     if (dwFlags & DIEP_TRIGGERBUTTON) {
 	FIXME("LinuxInput button mapping needs redoing; for now, assuming we're using an actual joystick.\n");
@@ -570,7 +569,8 @@ static HRESULT WINAPI LinuxInputEffectImpl_SetParameters(
 	TRACE("Sample period requested but no sample period functionality present.\n");
 
     if (dwFlags & DIEP_STARTDELAY)
-	This->effect.replay.delay = peff->dwStartDelay / 1000;
+    if ((dwFlags & DIEP_STARTDELAY) && peff->dwSize > sizeof(DIEFFECT_DX5))
+        This->effect.replay.delay = peff->dwStartDelay / 1000;
 
     if (dwFlags & DIEP_TRIGGERBUTTON) {
 	if (peff->dwTriggerButton != -1) {




More information about the wine-cvs mailing list