summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/ControllerInterface/SDL
diff options
context:
space:
mode:
authorRyan Houdek <Sonicadvance1@gmail.com>2014-04-15 23:02:17 -0500
committerRyan Houdek <Sonicadvance1@gmail.com>2014-04-16 16:28:57 -0500
commitc88b83699ee40147fa73b7ee8548aef1881fb0ca (patch)
treec3fcab8fee5e5ee350183e6b2f5427917f5b5cd7 /Source/Core/InputCommon/ControllerInterface/SDL
parent1f0da63cbe0ea52a78d60b608d4b322b2bfafb88 (diff)
Don't use SDL devices that report invalid ranges.
If Buttons, Axes, Hats, or Balls > 255 then reject it.
Diffstat (limited to 'Source/Core/InputCommon/ControllerInterface/SDL')
-rw-r--r--Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp b/Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp
index 56c526a079..4b738d4dbf 100644
--- a/Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp
+++ b/Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp
@@ -78,6 +78,17 @@ Joystick::Joystick(SDL_Joystick* const joystick, const int sdl_index, const unsi
}
#endif
+ if (SDL_JoystickNumButtons(joystick) > 255 ||
+ SDL_JoystickNumAxes(joystick) > 255 ||
+ SDL_JoystickNumHats(joystick) > 255 ||
+ SDL_JoystickNumBalls(joystick) > 255)
+ {
+ // This device is invalid, don't use it
+ // Some crazy devices(HP webcam 2100) end up as HID devices
+ // SDL tries parsing these as joysticks
+ return;
+ }
+
// get buttons
for (u8 i = 0; i != SDL_JoystickNumButtons(m_joystick); ++i)
AddInput(new Button(i, m_joystick));