Browse Source

[Image] Validate that ImageDrawRectangleRec is drawing entirely inside the image (#3264)

* Add a function to clone a sound and share data with another sound.

* rename items based on feedback

* PR Feedback, use custom unload for sound alias, not variant of normal sound unloading

* sound_multi example

* Validate that image rect drawing is inside the image so we don't overflow a buffer

* remove files that should not have been added.

* remove changes that should not have been

* revert

* adsfasdfsdfsdf
Jeffery Myers 2 years ago
parent
commit
21f5482e0d
1 changed files with 14 additions and 0 deletions
  1. 14 0
      src/rtextures.c

+ 14 - 0
src/rtextures.c

@@ -3284,6 +3284,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;