From 145ae839f13965ee8156bc2d652d43d12b139f58 Mon Sep 17 00:00:00 2001 From: Jeff Myers Date: Fri, 25 Aug 2023 16:30:58 -0700 Subject: [PATCH] Validate that image rect drawing is inside the image so we don't overflow a buffer --- src/rtextures.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/rtextures.c b/src/rtextures.c index c13e331cd..04e469c77 100644 --- a/src/rtextures.c +++ b/src/rtextures.c @@ -3134,6 +3134,20 @@ void ImageDrawRectangleRec(Image *dst, Rectangle rec, Color color) if (rec.width < 0) rec.width = 0; if (rec.height < 0) rec.height = 0; + // clamp the size the the image bounds + if (rec.x + rec.width >= dst->width) + rec.width = dst->width - rec.x; + + if (rec.y + rec.height >= dst->height) + rec.height = dst->height - rec.y; + + // check if the rect is even inside the image + if (rec.x > dst->width || rec.y > dst->height) + return; + + if (rec.x + rec.width < 0 || rec.y + rec.height < 0) + return; + int sy = (int)rec.y; int sx = (int)rec.x;