From cc5e9ffe701ac67df736d14a4d04bb50ae8236b2 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Tue, 27 Jun 2023 16:07:56 -0700
Subject: [PATCH] Don't crash if SDL_MapRGB() and SDL_MapRGBA() are passed a
NULL format
---
src/video/SDL_pixels.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/video/SDL_pixels.c b/src/video/SDL_pixels.c
index c837427595f8..d5b093064f58 100644
--- a/src/video/SDL_pixels.c
+++ b/src/video/SDL_pixels.c
@@ -857,6 +857,10 @@ void SDL_DetectPalette(SDL_Palette *pal, SDL_bool *is_opaque, SDL_bool *has_alph
/* Find the opaque pixel value corresponding to an RGB triple */
Uint32 SDL_MapRGB(const SDL_PixelFormat *format, Uint8 r, Uint8 g, Uint8 b)
{
+ if (!format) {
+ SDL_InvalidParamError("format");
+ return 0;
+ }
if (format->palette == NULL) {
return (r >> format->Rloss) << format->Rshift | (g >> format->Gloss) << format->Gshift | (b >> format->Bloss) << format->Bshift | format->Amask;
} else {
@@ -868,6 +872,10 @@ Uint32 SDL_MapRGB(const SDL_PixelFormat *format, Uint8 r, Uint8 g, Uint8 b)
Uint32 SDL_MapRGBA(const SDL_PixelFormat *format, Uint8 r, Uint8 g, Uint8 b,
Uint8 a)
{
+ if (!format) {
+ SDL_InvalidParamError("format");
+ return 0;
+ }
if (format->palette == NULL) {
return (r >> format->Rloss) << format->Rshift | (g >> format->Gloss) << format->Gshift | (b >> format->Bloss) << format->Bshift | ((Uint32)(a >> format->Aloss) << format->Ashift & format->Amask);
} else {