Mercurial > sdl-ios-xcode
diff src/video/SDL_surface.c @ 940:bb1588ebe47b
Date: Sat, 10 Jul 2004 21:02:33 +0200
From: "Philippe Plantier (ayin)"
Subject: [SDL] Problems allocating large surfaces
There are problems when allocating large surfaces using SDL_CreateRGBSurface.
When, for example, we try to allocate a surface wider than 16384 pixels,
the calculation of the pitch overflows; this leads to a surface that
has the w and h flags correctly set, but whose "pixels" buffer is too
small. That may lead to heap corruption.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sat, 21 Aug 2004 05:29:45 +0000 |
parents | 01cddd0f2efb |
children | c2f2370ac1e5 |
line wrap: on
line diff
--- a/src/video/SDL_surface.c Sat Aug 21 04:20:00 2004 +0000 +++ b/src/video/SDL_surface.c Sat Aug 21 05:29:45 2004 +0000 @@ -52,6 +52,13 @@ SDL_Surface *screen; SDL_Surface *surface; + /* Make sure the size requested doesn't overflow our datatypes */ + /* Next time I write a library like SDL, I'll use int for size. :) */ + if ( width > 16384 || height > 16384 ) { + SDL_SetError("Width or height is too large"); + return(NULL); + } + /* Check to see if we desire the surface in video memory */ if ( video ) { screen = SDL_PublicSurface;