From de720a8d4cfa620d079a58282c673307bccf6d21 Mon Sep 17 00:00:00 2001 From: Thomas Anderson <5776225+CrackedPixel@users.noreply.github.com> Date: Wed, 4 Mar 2026 01:40:15 -0600 Subject: [PATCH] [backend/GLFW] Added bounds check (#5621) * added bounds check * update from PR feedback --- src/platforms/rcore_desktop_glfw.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/platforms/rcore_desktop_glfw.c b/src/platforms/rcore_desktop_glfw.c index e47cad440..1975a7bfe 100644 --- a/src/platforms/rcore_desktop_glfw.c +++ b/src/platforms/rcore_desktop_glfw.c @@ -2178,16 +2178,19 @@ static void CursorEnterCallback(GLFWwindow *window, int enter) // GLFW3: Joystick connected/disconnected callback static void JoystickCallback(int jid, int event) { - if (event == GLFW_CONNECTED) + if (jid < MAX_GAMEPADS) { - // WARNING: If glfwGetJoystickName() is longer than MAX_GAMEPAD_NAME_LENGTH, - // only copy up to (MAX_GAMEPAD_NAME_LENGTH -1) to destination string - memset(CORE.Input.Gamepad.name[jid], 0, MAX_GAMEPAD_NAME_LENGTH); - strncpy(CORE.Input.Gamepad.name[jid], glfwGetJoystickName(jid), MAX_GAMEPAD_NAME_LENGTH - 1); - } - else if (event == GLFW_DISCONNECTED) - { - memset(CORE.Input.Gamepad.name[jid], 0, MAX_GAMEPAD_NAME_LENGTH); + if (event == GLFW_CONNECTED) + { + // WARNING: If glfwGetJoystickName() is longer than MAX_GAMEPAD_NAME_LENGTH, + // only copy up to (MAX_GAMEPAD_NAME_LENGTH -1) to destination string + memset(CORE.Input.Gamepad.name[jid], 0, MAX_GAMEPAD_NAME_LENGTH); + strncpy(CORE.Input.Gamepad.name[jid], glfwGetJoystickName(jid), MAX_GAMEPAD_NAME_LENGTH - 1); + } + else if (event == GLFW_DISCONNECTED) + { + memset(CORE.Input.Gamepad.name[jid], 0, MAX_GAMEPAD_NAME_LENGTH); + } } }