Fixed bug 4898 - No rumble because of integer overflow in SDL_JoystickRumble

meyraud705

On a Dualshock 4 controller using hidapi driver, calling SDL_JoystickRumble with a duration too long (SDL_HAPTIC_INFINITY for example) causes the rumble to stop immediately.

This happens because of integer overflow on line 301 of SDL_hidapi_ps4.c
(https://hg.libsdl.org/SDL/file/a3077169ad23/src/joystick/hidapi/SDL_hidapi_ps4.c#l301), which sets expiration time in the past.
This commit is contained in:
Sam Lantinga
2019-12-16 10:20:03 -08:00
parent 4d4e5584ea
commit a7ae9175c3
4 changed files with 6 additions and 3 deletions

View File

@@ -43,6 +43,9 @@
#undef SDL_JOYSTICK_HIDAPI_XBOXONE
#endif
/* Prevent rumble duration overflow */
#define SDL_MAX_RUMBLE_DURATION_MS 0x0fffffff
typedef struct _SDL_HIDAPI_DeviceDriver
{
const char *hint;