summaryrefslogtreecommitdiffstats
path: root/source/l/sdl/CVE-2021-33657.patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/l/sdl/CVE-2021-33657.patch')
-rw-r--r--source/l/sdl/CVE-2021-33657.patch35
1 files changed, 35 insertions, 0 deletions
diff --git a/source/l/sdl/CVE-2021-33657.patch b/source/l/sdl/CVE-2021-33657.patch
new file mode 100644
index 000000000..3ceb96a17
--- /dev/null
+++ b/source/l/sdl/CVE-2021-33657.patch
@@ -0,0 +1,35 @@
+From d95c1a4bbd644baba748d341b03141e5f0481ae6 Mon Sep 17 00:00:00 2001
+From: Sam Lantinga <slouken@libsdl.org>
+Date: Tue, 30 Nov 2021 12:36:46 -0800
+Subject: [PATCH] Always create a full 256-entry map in case color values are
+ out of range
+
+Fixes https://github.com/libsdl-org/SDL/issues/5042
+
+Backport of CVE-2021-33657 fix from SDL2
+---
+ src/video/SDL_pixels.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/video/SDL_pixels.c b/src/video/SDL_pixels.c
+index 17f1a7199..d0973f217 100644
+--- a/src/video/SDL_pixels.c
++++ b/src/video/SDL_pixels.c
+@@ -477,7 +477,7 @@ static Uint8 *Map1to1(SDL_Palette *src, SDL_Palette *dst, int *identical)
+ }
+ *identical = 0;
+ }
+- map = (Uint8 *)SDL_malloc(src->ncolors);
++ map = (Uint8 *) SDL_calloc(256, sizeof(Uint8));
+ if ( map == NULL ) {
+ SDL_OutOfMemory();
+ return(NULL);
+@@ -498,7 +498,7 @@ static Uint8 *Map1toN(SDL_PixelFormat *src, SDL_PixelFormat *dst)
+ SDL_Palette *pal = src->palette;
+
+ bpp = ((dst->BytesPerPixel == 3) ? 4 : dst->BytesPerPixel);
+- map = (Uint8 *)SDL_malloc(pal->ncolors*bpp);
++ map = (Uint8 *) SDL_calloc(256, bpp);
+ if ( map == NULL ) {
+ SDL_OutOfMemory();
+ return(NULL);