From 24ccde693efec1a8bd7bcb0a09c034d1c6313138 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Tue, 29 Apr 2025 00:30:41 -0500 Subject: [PATCH] events: Fix undefined behavior when disabling some event types Shifting a signed int left by 31 is UB. (cherry picked from commit 15fd3fcdc214d06dd5c12daf4a29772e994c6b7a) --- src/events/SDL_events.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/events/SDL_events.c b/src/events/SDL_events.c index 1d4d785f5d..3dcd9a8f66 100644 --- a/src/events/SDL_events.c +++ b/src/events/SDL_events.c @@ -1318,7 +1318,7 @@ Uint8 SDL_EventState(Uint32 type, int state) Uint8 lo = (type & 0xff); if (SDL_disabled_events[hi] && - (SDL_disabled_events[hi]->bits[lo / 32] & (1 << (lo & 31)))) { + (SDL_disabled_events[hi]->bits[lo / 32] & (1U << (lo & 31)))) { current_state = SDL_DISABLE; } else { current_state = SDL_ENABLE; @@ -1332,11 +1332,11 @@ Uint8 SDL_EventState(Uint32 type, int state) } /* Out of memory, nothing we can do... */ if (SDL_disabled_events[hi]) { - SDL_disabled_events[hi]->bits[lo / 32] |= (1 << (lo & 31)); + SDL_disabled_events[hi]->bits[lo / 32] |= (1U << (lo & 31)); SDL_FlushEvent(type); } } else { // state == SDL_ENABLE - SDL_disabled_events[hi]->bits[lo / 32] &= ~(1 << (lo & 31)); + SDL_disabled_events[hi]->bits[lo / 32] &= ~(1U << (lo & 31)); } #ifndef SDL_JOYSTICK_DISABLED