cvs: gd /libgd gd.c
[email protected] ("Mattias Bengtsson") Wed, 08 Aug 2007 12:57:18 -0000
| Newsgroups | php.gd.cvs |
|---|---|
| Message-ID | <cvsmattias1186577838@cvsserver> |
mattias Wed Aug 8 12:57:18 2007 UTC
Modified files:
/gd/libgd gd.c
Log:
- #109, Possible integer overflow in gdImageFill()
http://cvs.php.net/viewvc.cgi/gd/libgd/gd.c?r1=1.63&r2=1.64&diff_format=u
Index: gd/libgd/gd.c
diff -u gd/libgd/gd.c:1.63 gd/libgd/gd.c:1.64
--- gd/libgd/gd.c:1.63 Tue Jun 19 20:25:32 2007
+++ gd/libgd/gd.c Wed Aug 8 12:57:18 2007
@@ -1,4 +1,4 @@
-/* $Id: gd.c,v 1.63 2007/06/19 20:25:32 pajoye Exp $ */
+/* $Id: gd.c,v 1.64 2007/08/08 12:57:18 mattias Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
@@ -1954,6 +1954,14 @@
goto done;
}
+ if(overflow2(im->sy, im->sx)) {
+ return;
+ }
+
+ if(overflow2(sizeof(struct seg), ((im->sy * im->sx) / 4))) {
+ return;
+ }
+
stack = (struct seg *)gdMalloc(sizeof(struct seg) * ((int)(im->sy*im->sx)/4));
if (!stack) {
return;
@@ -2019,6 +2027,14 @@
wx2=im->sx;wy2=im->sy;
tiled = nc==gdTiled;
+ if(overflow2(im->sy, im->sx)) {
+ return;
+ }
+
+ if(overflow2(sizeof(struct seg), ((im->sy * im->sx) / 4))) {
+ return;
+ }
+
nc = gdImageTileGet(im,x,y);
pts = (char *) gdCalloc(im->sy * im->sx, sizeof(char));
if (!pts) {