pajoye          Sun Dec 25 19:39:54 2005 EDT

  Added files:                 (Branch: PHP_5_1)
    /php-src/ext/gd/tests       colormatch.phpt 

  Modified files:              
    /php-src/ext/gd     gd.c 
    /php-src/ext/gd/libgd       gd_topal.c 
  Log:
  - MFH: fix segfault/leak in imagecolormatch
  - MFH: test for imagecolormatch
  
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/gd/gd.c?r1=1.312.2.8&r2=1.312.2.9&diff_format=u
Index: php-src/ext/gd/gd.c
diff -u php-src/ext/gd/gd.c:1.312.2.8 php-src/ext/gd/gd.c:1.312.2.9
--- php-src/ext/gd/gd.c:1.312.2.8       Sat Dec 17 17:46:59 2005
+++ php-src/ext/gd/gd.c Sun Dec 25 19:39:53 2005
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: gd.c,v 1.312.2.8 2005/12/17 17:46:59 pajoye Exp $ */
+/* $Id: gd.c,v 1.312.2.9 2005/12/25 19:39:53 pajoye Exp $ */
 
 /* gd 1.2 is copyright 1994, 1995, Quest Protein Database Center,
    Cold Spring Harbor Labs. */
@@ -930,6 +930,10 @@
                        php_error_docref(NULL TSRMLS_CC, E_ERROR, "Image1 and 
Image2 must be the same size" );
                        RETURN_FALSE;
                        break;
+               case -4:
+                       php_error_docref(NULL TSRMLS_CC, E_ERROR, "Image2 must 
have at least one color" );
+                       RETURN_FALSE;
+                       break;
        }
 
        RETURN_TRUE;
http://cvs.php.net/viewcvs.cgi/php-src/ext/gd/libgd/gd_topal.c?r1=1.17&r2=1.17.2.1&diff_format=u
Index: php-src/ext/gd/libgd/gd_topal.c
diff -u php-src/ext/gd/libgd/gd_topal.c:1.17 
php-src/ext/gd/libgd/gd_topal.c:1.17.2.1
--- php-src/ext/gd/libgd/gd_topal.c:1.17        Wed Aug 11 23:25:50 2004
+++ php-src/ext/gd/libgd/gd_topal.c     Sun Dec 25 19:39:53 2005
@@ -2086,6 +2086,9 @@
        if( (im1->sx != im2->sx) || (im1->sy != im2->sy) ) {
                return -3; /* the images are meant to be the same dimensions */
        }
+       if (im2->colorsTotal<1) {
+               return -4; /* At least 1 color must be allocated */
+       }
 
        buf = (unsigned long *)safe_emalloc(sizeof(unsigned long), 5 * 
im2->colorsTotal, 0);
        memset( buf, 0, sizeof(unsigned long) * 5 * im2->colorsTotal );

http://cvs.php.net/viewcvs.cgi/php-src/ext/gd/tests/colormatch.phpt?view=markup&rev=1.1
Index: php-src/ext/gd/tests/colormatch.phpt
+++ php-src/ext/gd/tests/colormatch.phpt
--TEST--
imagecolormatch
--SKIPIF--
<?php
        if (!function_exists('imagecolormatch')) die("skip gd extension not 
available\n");
?>
--FILE--
<?php

$im = imagecreatetruecolor(5,5);
$im2 = imagecreate(5,5);

imagecolormatch($im, $im2);

echo "ok\n";

imagedestroy($im);
?>
--EXPECTF--
Fatal error: imagecolormatch(): Image2 must have at least one color in %s on 
line %d



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to