fixed and added some range checks for joysticks
authorHolger Schemel <info@artsoft.org>
Tue, 11 Jul 2017 20:57:32 +0000 (22:57 +0200)
committerHolger Schemel <info@artsoft.org>
Tue, 11 Jul 2017 20:57:32 +0000 (22:57 +0200)
src/libgame/sdl.c

index 04a098c..04fa05e 100644 (file)
@@ -2603,7 +2603,7 @@ static boolean sdl_is_controller[MAX_PLAYERS];
 
 static boolean SDLOpenJoystick(int nr)
 {
-  if (nr < 0 || nr > MAX_PLAYERS)
+  if (nr < 0 || nr >= MAX_PLAYERS)
     return FALSE;
 
 #if defined(TARGET_SDL2)
@@ -2631,7 +2631,7 @@ static boolean SDLOpenJoystick(int nr)
 
 static void SDLCloseJoystick(int nr)
 {
-  if (nr < 0 || nr > MAX_PLAYERS)
+  if (nr < 0 || nr >= MAX_PLAYERS)
     return;
 
 #if 1
@@ -2659,7 +2659,7 @@ static void SDLCloseJoystick(int nr)
 
 boolean SDLCheckJoystickOpened(int nr)
 {
-  if (nr < 0 || nr > MAX_PLAYERS)
+  if (nr < 0 || nr >= MAX_PLAYERS)
     return FALSE;
 
 #if defined(TARGET_SDL2)
@@ -2680,6 +2680,9 @@ static void setJoystickAxis(int nr, int axis_id_raw, int axis_value)
   int axis_id = axis_id_raw % 2;
 #endif
 
+  if (nr < 0 || nr >= MAX_PLAYERS)
+    return;
+
   if (axis_id == -1)
     return;
 
@@ -2723,6 +2726,9 @@ static void setJoystickButton(int nr, int button_id_raw, int button_state)
   int button_id = button_id_raw % 2;
 #endif
 
+  if (nr < 0 || nr >= MAX_PLAYERS)
+    return;
+
   if (button_id == -1)
     return;