diff --git a/frontends/monkey/bitmap.c b/frontends/monkey/bitmap.c index cc13c8b..60104ec 100644 --- a/frontends/monkey/bitmap.c +++ b/frontends/monkey/bitmap.c @@ -36,12 +36,16 @@ struct bitmap { static void *bitmap_create(int width, int height, enum gui_bitmap_flags flags) { + if (width <= 0 || height <= 0 || width > 8192 || height > 8192 || + (size_t)width * (size_t)height > 32u * 1024u * 1024u) + return NULL; struct bitmap *ret = calloc(1, sizeof(*ret)); if (ret == NULL) return NULL; ret->width = width; ret->height = height; + ret->rowstride = (size_t)width * 4; ret->opaque = (flags & BITMAP_OPAQUE) == BITMAP_OPAQUE; ret->ptr = calloc(width, height * 4);