ChangeSet ID: 21232 CVSROOT: /opt/cvs-commit Module name: wine Changes by: julliard@winehq.org 2005/11/12 13:10:38
Modified files: dlls/dinput : joystick_linuxinput.c
Log message: Daniel Remenak dtremenak@gmail.com Add additional sanity checks to the linux input system dinput joystick implementation.
Patch: http://cvs.winehq.org/patch.py?id=21232
Old revision New revision Changes Path 1.33 1.34 +20 -4 wine/dlls/dinput/joystick_linuxinput.c
Index: wine/dlls/dinput/joystick_linuxinput.c diff -u -p wine/dlls/dinput/joystick_linuxinput.c:1.33 wine/dlls/dinput/joystick_linuxinput.c:1.34 --- wine/dlls/dinput/joystick_linuxinput.c:1.33 12 Nov 2005 19:10:38 -0000 +++ wine/dlls/dinput/joystick_linuxinput.c 12 Nov 2005 19:10:38 -0000 @@ -419,8 +419,6 @@ static HRESULT WINAPI JoystickAImpl_SetD
TRACE("(this=%p,%p)\n",This,df);
- _dump_DIDATAFORMAT(df); - if (df == NULL) { WARN("invalid pointer\n"); return E_POINTER; @@ -431,6 +429,8 @@ static HRESULT WINAPI JoystickAImpl_SetD return DIERR_INVALIDPARAM; }
+ _dump_DIDATAFORMAT(df); + if (This->joyfd!=-1) { WARN("acquired\n"); return DIERR_ACQUIRED; @@ -906,8 +906,13 @@ static HRESULT WINAPI JoystickAImpl_SetP { JoystickImpl *This = (JoystickImpl *)iface;
- FIXME("(this=%p,%s,%p)\n",This,debugstr_guid(rguid),ph); - FIXME("ph.dwSize = %ld, ph.dwHeaderSize =%ld, ph.dwObj = %ld, ph.dwHow= %ld\n",ph->dwSize, ph->dwHeaderSize,ph->dwObj,ph->dwHow); + if (!ph) { + WARN("invalid argument\n"); + return DIERR_INVALIDPARAM; + } + + TRACE("(this=%p,%s,%p)\n",This,debugstr_guid(rguid),ph); + TRACE("ph.dwSize = %ld, ph.dwHeaderSize =%ld, ph.dwObj = %ld, ph.dwHow= %ld\n",ph->dwSize, ph->dwHeaderSize,ph->dwObj,ph->dwHow);
if (!HIWORD(rguid)) { switch (LOWORD(rguid)) { @@ -993,6 +998,17 @@ static HRESULT WINAPI JoystickAImpl_GetC int i,axes,buttons;
TRACE("%p->(%p)\n",iface,lpDIDevCaps); + + if (!lpDIDevCaps) { + WARN("invalid pointer\n"); + return E_POINTER; + } + + if (lpDIDevCaps->dwSize != sizeof(DIDEVCAPS)) { + WARN("invalid argument\n"); + return DIERR_INVALIDPARAM; + } + if (xfd==-1) { /* yes, games assume we return something, even if unacquired */ JoystickAImpl_Acquire(iface);