Commit c02aee8b authored by Daniel Remenak's avatar Daniel Remenak Committed by Alexandre Julliard

Add additional sanity checks to the linux input system dinput joystick

implementation.
parent e596a011
...@@ -419,8 +419,6 @@ static HRESULT WINAPI JoystickAImpl_SetDataFormat( ...@@ -419,8 +419,6 @@ static HRESULT WINAPI JoystickAImpl_SetDataFormat(
TRACE("(this=%p,%p)\n",This,df); TRACE("(this=%p,%p)\n",This,df);
_dump_DIDATAFORMAT(df);
if (df == NULL) { if (df == NULL) {
WARN("invalid pointer\n"); WARN("invalid pointer\n");
return E_POINTER; return E_POINTER;
...@@ -431,6 +429,8 @@ static HRESULT WINAPI JoystickAImpl_SetDataFormat( ...@@ -431,6 +429,8 @@ static HRESULT WINAPI JoystickAImpl_SetDataFormat(
return DIERR_INVALIDPARAM; return DIERR_INVALIDPARAM;
} }
_dump_DIDATAFORMAT(df);
if (This->joyfd!=-1) { if (This->joyfd!=-1) {
WARN("acquired\n"); WARN("acquired\n");
return DIERR_ACQUIRED; return DIERR_ACQUIRED;
...@@ -906,8 +906,13 @@ static HRESULT WINAPI JoystickAImpl_SetProperty(LPDIRECTINPUTDEVICE8A iface, ...@@ -906,8 +906,13 @@ static HRESULT WINAPI JoystickAImpl_SetProperty(LPDIRECTINPUTDEVICE8A iface,
{ {
JoystickImpl *This = (JoystickImpl *)iface; JoystickImpl *This = (JoystickImpl *)iface;
FIXME("(this=%p,%s,%p)\n",This,debugstr_guid(rguid),ph); if (!ph) {
FIXME("ph.dwSize = %ld, ph.dwHeaderSize =%ld, ph.dwObj = %ld, ph.dwHow= %ld\n",ph->dwSize, ph->dwHeaderSize,ph->dwObj,ph->dwHow); 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)) { if (!HIWORD(rguid)) {
switch (LOWORD(rguid)) { switch (LOWORD(rguid)) {
...@@ -993,6 +998,17 @@ static HRESULT WINAPI JoystickAImpl_GetCapabilities( ...@@ -993,6 +998,17 @@ static HRESULT WINAPI JoystickAImpl_GetCapabilities(
int i,axes,buttons; int i,axes,buttons;
TRACE("%p->(%p)\n",iface,lpDIDevCaps); 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) { if (xfd==-1) {
/* yes, games assume we return something, even if unacquired */ /* yes, games assume we return something, even if unacquired */
JoystickAImpl_Acquire(iface); JoystickAImpl_Acquire(iface);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment