Просмотр исходного кода

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.
Anonymous Maarten 16 часов назад
Родитель
Сommit
d5af35e3fb
1 измененных файлов с 1 добавлено и 1 удалено
  1. 1 1
      src/video/SDL_surface.c

+ 1 - 1
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)
 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");
         return SDL_InvalidParamError("surface");
     }
     }