mirror of
https://github.com/yawut/SDL.git
synced 2026-06-22 12:29:50 -05:00
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.
This commit is contained in:
parent
efb58cab17
commit
6684ece32e
|
|
@ -52,6 +52,13 @@ SDL_Surface * SDL_CreateRGBSurface (Uint32 flags,
|
|||
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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user