SDL: surface: cannot set a palette to a non-indexed surface

From d5af35e3fbb5bb6555ed00e69740d52af2a4e877 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Fri, 15 May 2026 03:47:28 +0200
Subject: [PATCH] surface: cannot set a palette to a non-indexed surface

This fixes a UBSAN warning later in this function where it calculates
(1 << SDL_BITSPERPIXEL(surface->format)). The bpp might be >= 32 and
out of range for a bit shift.
---
 src/video/SDL_surface.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/video/SDL_surface.c b/src/video/SDL_surface.c
index 6a03fad7327db..ddd02fa6571f2 100644
--- a/src/video/SDL_surface.c
+++ b/src/video/SDL_surface.c
@@ -423,7 +423,7 @@ SDL_Palette *SDL_CreateSurfacePalette(SDL_Surface *surface)
 
 bool SDL_SetSurfacePalette(SDL_Surface *surface, SDL_Palette *palette)
 {
-    CHECK_PARAM(!SDL_SurfaceValid(surface)) {
+    CHECK_PARAM(!SDL_SurfaceValid(surface) || !SDL_ISPIXELFORMAT_INDEXED(surface->format)) {
         return SDL_InvalidParamError("surface");
     }