cvs: gd /libgd gd.c /libgd/tests CMakeLists.txt /libgd/tests/gdimagecolortransparent CMakeLists.txt gdimagecolortransparent.c

[email protected] ("Mattias Bengtsson") Sun, 09 Sep 2007 13:14:25 -0000
Newsgroups php.gd.cvs
Message-ID <cvsmattias1189343665@cvsserver>
mattias		Sun Sep  9 13:14:25 2007 UTC

  Modified files:              
    /gd/libgd	gd.c 
    /gd/libgd/tests	CMakeLists.txt 
    /gd/libgd/tests/gdimagecolortransparent	gdimagecolortransparent.c 
                                           	CMakeLists.txt 
  Log:
  -MFB, #113, gdImageColorTransparent can write outside buffer
  
http://cvs.php.net/viewvc.cgi/gd/libgd/gd.c?r1=1.71&r2=1.72&diff_format=u
Index: gd/libgd/gd.c
diff -u gd/libgd/gd.c:1.71 gd/libgd/gd.c:1.72
--- gd/libgd/gd.c:1.71	Sat Sep  1 12:35:18 2007
+++ gd/libgd/gd.c	Sun Sep  9 13:14:25 2007
@@ -1,4 +1,4 @@
-/* $Id: gd.c,v 1.71 2007/09/01 12:35:18 mattias Exp $ */
+/* $Id: gd.c,v 1.72 2007/09/09 13:14:25 mattias Exp $ */
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -600,6 +600,9 @@
 {
   if (!im->trueColor)
     {
+	if((color < -1) || (color >= gdMaxColors)) {
+		return;
+	}
       if (im->transparent != -1)
 	{
 	  im->alpha[im->transparent] = gdAlphaOpaque;
http://cvs.php.net/viewvc.cgi/gd/libgd/tests/CMakeLists.txt?r1=1.3&r2=1.4&diff_format=u
Index: gd/libgd/tests/CMakeLists.txt
diff -u gd/libgd/tests/CMakeLists.txt:1.3 gd/libgd/tests/CMakeLists.txt:1.4
--- gd/libgd/tests/CMakeLists.txt:1.3	Fri Aug 31 07:43:58 2007
+++ gd/libgd/tests/CMakeLists.txt	Sun Sep  9 13:14:25 2007
@@ -33,6 +33,7 @@
 		gdimagecolorexact
 		gdimagecolorresolve
 		gdimagecolordeallocate
+		gdimagecolortransparent
 		#gdimageellipse
 		gdimageline
 		gdimagefilledellipse
http://cvs.php.net/viewvc.cgi/gd/libgd/tests/gdimagecolortransparent/gdimagecolortransparent.c?r1=1.1&r2=1.2&diff_format=u
Index: gd/libgd/tests/gdimagecolortransparent/gdimagecolortransparent.c
diff -u /dev/null gd/libgd/tests/gdimagecolortransparent/gdimagecolortransparent.c:1.2
--- /dev/null	Sun Sep  9 13:14:25 2007
+++ gd/libgd/tests/gdimagecolortransparent/gdimagecolortransparent.c	Sun Sep  9 13:14:25 2007
@@ -0,0 +1,31 @@
+#include <gd.h>
+#include <stdio.h>
+#include "gdtest.h"
+
+int main()
+{
+	gdImagePtr im;
+	int error = 0, pos;
+
+	pos = gdMaxColors;
+
+	im = gdImageCreate(1,1);
+
+	gdImageColorTransparent(im, pos);
+
+	if(im->transparent == pos) {
+		error = -1;
+	}
+
+	pos = -2;
+
+	gdImageColorTransparent(im, pos);
+
+	if(im->transparent == pos) {
+		error = -1;
+	}
+
+	gdImageDestroy(im);
+
+	return error;
+}
http://cvs.php.net/viewvc.cgi/gd/libgd/tests/gdimagecolortransparent/CMakeLists.txt?r1=1.1&r2=1.2&diff_format=u
Index: gd/libgd/tests/gdimagecolortransparent/CMakeLists.txt
diff -u /dev/null gd/libgd/tests/gdimagecolortransparent/CMakeLists.txt:1.2
--- /dev/null	Sun Sep  9 13:14:25 2007
+++ gd/libgd/tests/gdimagecolortransparent/CMakeLists.txt	Sun Sep  9 13:14:25 2007
@@ -0,0 +1,9 @@
+SET(TESTS_FILES
+	gdimagecolortransparent
+)
+
+FOREACH(test_name ${TESTS_FILES})
+	add_executable(${test_name} "${test_name}.c")
+	target_link_libraries (${test_name} gdTest ${GD_LIB})
+	ADD_TEST("${test_name}" ${EXECUTABLE_OUTPUT_PATH}/${test_name})
+ENDFOREACH(test_name)