Commit 49225f5f0429da80e9fbed49fd705cda399a2da7

Sam Lantinga 2016-12-31T18:11:19

We don't currently support blitting to < 8 bpp surfaces, return an error instead of corrupting memory in that case.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
diff --git a/src/video/SDL_blit.c b/src/video/SDL_blit.c
index 90aa878..b64f4cb 100644
--- a/src/video/SDL_blit.c
+++ b/src/video/SDL_blit.c
@@ -219,6 +219,12 @@ SDL_CalculateBlit(SDL_Surface * surface)
     SDL_BlitMap *map = surface->map;
     SDL_Surface *dst = map->dst;
 
+    /* We don't currently support blitting to < 8 bpp surfaces */
+    if (dst->format->BitsPerPixel < 8) {
+        SDL_InvalidateMap(map);
+        return SDL_SetError("Blit combination not supported");
+    }
+
     /* Clean everything out to start */
     if ((surface->flags & SDL_RLEACCEL) == SDL_RLEACCEL) {
         SDL_UnRLESurface(surface, 1);