(2.0.34 or 2.0.35) work.
--TEST--
Bug #19366 (gdimagefill() function crashes (fixed in bundled libgd))
--SKIPIF--
-<?php
- if (!extension_loaded('gd')) die("skip gd extension not available\n");
- if (!GD_BUNDLED) die('skip external GD libraries always fail');
+<?php
+ if (!extension_loaded('gd')) die("skip gd extension not available\n");
?>
--FILE--
<?php
--TEST--
Bug #22544 (TrueColor transparency in PNG images).
--SKIPIF--
-<?php
- if (!extension_loaded('gd')) {
+<?php
+ if (!extension_loaded('gd')) {
die("skip gd extension not available\n");
}
- if (!GD_BUNDLED) {
- die('skip external GD libraries may fail');
- }
?>
--FILE--
<?php
imageColorTransparent($image, $transparent);
imageFilledRectangle($image, 0, 0, 640-1, 100-1, $transparent);
imagePng($image, $dest);
- echo md5_file($dest) . "\n";
+ echo md5_file($dest) . "\n";
@unlink($dest);
?>
--EXPECT--
--TEST--
Bug #24155 (gdImageRotate270 rotation problem).
--SKIPIF--
-<?php
- if (!extension_loaded('gd')) {
+<?php
+ if (!extension_loaded('gd')) {
die("skip gd extension not available\n");
}
- if (!GD_BUNDLED) {
- die('skip external GD libraries may fail');
- }
+ if (!function_exists("imagerotate")) die("skip requires bundled GD library\n");
?>
--FILE--
<?php
@unlink($dest);
$im = imagecreatetruecolor(30, 50);
- imagefill($im, 0, 0, (16777215 - 255));
+ imagefill($im, 0, 0, (16777215 - 255));
$im = imagerotate($im, 270, 255);
imagepng($im, $dest);
if (!extension_loaded('gd')) {
die("skip gd extension not available\n");
}
- if (!GD_BUNDLED) {
- die('skip external GD libraries may fail');
- }
?>
--FILE--
<?php
?>
--EXPECT--
000000111111101010
-111111111111111111
+111111111111111111
--SKIPIF--
<?php
if (!extension_loaded('gd')) die("skip gd extension not available\n");
- if (!GD_BUNDLED) die('skip external GD libraries always fail');
?>
--FILE--
<?php
--TEST--
Bug #28147 (Crash with anti-aliased line)
--SKIPIF--
-<?php
- if (!extension_loaded('gd')) die("skip gd extension not available\n");
- if (!GD_BUNDLED) die('skip external GD libraries always fail');
+<?php
+ if (!extension_loaded('gd')) die("skip gd extension not available\n");
+ if (!function_exists("imageantialias")) die("skip requires bundled GD library\n");
?>
--FILE--
<?php
$im = imagecreatetruecolor(300, 300);
$w = imagecolorallocate($im, 255, 255, 255);
$red = imagecolorallocate($im, 255, 0, 0);
-
+
imagefilledrectangle($im,0,0,299,299,$w);
-
+
imageantialias($im,true);
imageline($im, 299, 299, 0, 299, $red);
-
+
imagedestroy($im);
echo "Alive\n";
--TEST--
Bug #36697 (TrueColor transparency with GIF palette output).
--SKIPIF--
-<?php
- if (!extension_loaded('gd')) {
+<?php
+ if (!extension_loaded('gd')) {
die("skip gd extension not available\n");
}
- if (!GD_BUNDLED) {
- die('skip external GD libraries may fail');
- }
?>
--FILE--
<?php
--TEST--
Bug #37346 (gdimagecreatefromgif, bad colormap)
--SKIPIF--
-<?php
- if (!extension_loaded('gd')) die("skip gd extension not available\n");
- if (!GD_BUNDLED) die('skip external GD libraries always fail');
+<?php
+ if (!extension_loaded('gd')) die("skip gd extension not available\n");
?>
--FILE--
<?php
--TEST--
Bug #37360 (gdimagecreatefromgif, bad image sizes)
--SKIPIF--
-<?php
- if (!extension_loaded('gd')) die("skip gd extension not available\n");
- if (!GD_BUNDLED) die('skip external GD libraries always fail');
+<?php
+ if (!extension_loaded('gd')) die("skip gd extension not available\n");
?>
--FILE--
<?php
--TEST--
Bug #38112 (GIF Invalid Code size ).
--SKIPIF--
-<?php
- if (!extension_loaded('gd')) {
+<?php
+ if (!extension_loaded('gd')) {
die("skip gd extension not available\n");
}
- if (!GD_BUNDLED) {
- die('skip external GD libraries may fail');
- }
?>
--FILE--
<?php
--TEST--
Bug #39082 (Output image to stdout segfaults).
--SKIPIF--
-<?php
- if (!extension_loaded('gd')) {
+<?php
+ if (!extension_loaded('gd')) {
die("skip gd extension not available\n");
}
- if (!GD_BUNDLED) {
- die('skip external GD libraries may fail');
- }
?>
--FILE--
<?php
--TEST--
Bug #37360 (gdimagecreatefromgif, bad image sizes)
--SKIPIF--
-<?php
- if (!extension_loaded('gd')) die("skip gd extension not available\n");
- if (!GD_BUNDLED) die('skip external GD libraries always fail');
+<?php
+ if (!extension_loaded('gd')) die("skip gd extension not available\n");
?>
--FILE--
<?php
--TEST--
Bug #39508 (imagefill crashes with small images 3 pixels or less)
--SKIPIF--
-<?php
- if (!extension_loaded('gd')) die("skip gd extension not available\n");
- if (!GD_BUNDLED) die('skip external GD libraries always fail');
+<?php
+ if (!extension_loaded('gd')) die("skip gd extension not available\n");
?>
--FILE--
<?php
--TEST--
Bug #39366 (imagerotate does not respect alpha with angles>45)
--SKIPIF--
-<?php
- if (!extension_loaded('gd')) die("skip gd extension not available\n");
- if (!GD_BUNDLED) die('skip external GD libraries always fail');
+<?php
+ if (!extension_loaded('gd')) die("skip gd extension not available\n");
+ if (!function_exists("imagerotate")) die("skip requires bundled GD library\n");
?>
--FILE--
<?php
--TEST--
Bug #39508 (imagefill crashes with small images 3 pixels or less)
--SKIPIF--
-<?php
- if (!extension_loaded('gd')) die("skip gd extension not available\n");
- if (!GD_BUNDLED) die('skip external GD libraries always fail');
+<?php
+ if (!extension_loaded('gd')) die("skip gd extension not available\n");
?>
--FILE--
<?php
--TEST--
Bug #39780 (PNG image with CRC/data error raises a fatal error)
--SKIPIF--
-<?php
- if (!extension_loaded('gd')) die("skip gd extension not available\n");
- if (!GD_BUNDLED) die('skip external GD libraries always fail');
+<?php
+ if (!extension_loaded('gd')) die("skip gd extension not available\n");
+ if (!GD_BUNDLED) die("skip requires bundled GD library\n");
?>
--FILE--
<?php
Warning: imagecreatefrompng(): gd-png error: setjmp returns error condition in %s on line %d
-Warning: imagecreatefrompng(): '%sbug39780.png' is not a valid PNG file in %s on line %d
+Warning: imagecreatefrompng(): '%s' is not a valid PNG file in %s on line %d
bool(false)
--- /dev/null
+--TEST--
+Bug #39780 (PNG image with CRC/data error raises a fatal error)
+--SKIPIF--
+<?php
+ if (!extension_loaded('gd')) die("skip gd extension not available\n");
+ if (GD_BUNDLED) die("skip requires extern GD\n");
+?>
+--FILE--
+<?php
+
+$im = imagecreatefrompng(dirname(__FILE__) . '/bug39780.png');
+var_dump($im);
+?>
+--EXPECTF--
+gd-png: fatal libpng error: Read Error: truncated data
+gd-png error: setjmp returns error condition 2
+Warning: imagecreatefrompng(): '%sbug39780.png' is not a valid PNG file in /%s on line %d
+bool(false)
\ No newline at end of file
--SKIPIF--
<?php
if (!function_exists('imagecreatefromgd2')) die("skip gd extension not available\n");
- if (!GD_BUNDLED) die('skip external GD libraries always fail');
?>
--FILE--
<?php
--SKIPIF--
<?php
if (!function_exists('imagecreatefromwbmp')) die("skip gd extension not available\n");
- if (!GD_BUNDLED) die('skip external GD libraries always fail');
?>
--FILE--
<?php
--SKIPIF--
<?php
if (!function_exists('imagecreatefromwbmp')) die("skip gd extension not available\n");
+ if (!GD_BUNDLED) die("skip requires bundled GD library\n");
?>
--FILE--
<?php
Warning: imagecreatefromwbmp(): gd warning: product of memory allocation multiplication would exceed INT_MAX, failing operation gracefully
in %s on line %d
-Warning: imagecreatefromwbmp(): '%s' is not a valid WBMP file in %s on line %d
+Warning: imagecreatefromwbmp(): '%s' is not a valid WBMP file in %s on line %d
--- /dev/null
+--TEST--
+imagecreatefromwbmp with invalid wbmp
+--SKIPIF--
+<?php
+ if (!function_exists('imagecreatefromwbmp')) die("skip gd extension not available\n");
+ if (GD_BUNDLED) die("skip requires extern GD\n");
+?>
+--FILE--
+<?php
+$filename = dirname(__FILE__) . '/_tmp.wbmp';
+$fp = fopen($filename,"wb");
+if (!$fp) {
+ exit("Failed to create <$filename>");
+}
+
+//write header
+$c = 0;
+fputs($fp, chr($c), 1);
+fputs($fp, $c, 1);
+
+//write width = 2^32 / 4 + 1
+$c = 0x84;
+fputs($fp, chr($c), 1);
+$c = 0x80;
+fputs($fp, chr($c), 1);
+fputs($fp, chr($c), 1);
+fputs($fp, chr($c), 1);
+$c = 0x01;
+fputs($fp, chr($c), 1);
+
+/*write height = 4*/
+$c = 0x04;
+fputs($fp, chr($c), 1);
+
+/*write some data to cause overflow*/
+for ($i=0; $i<10000; $i++) {
+ fwrite($fp, chr($c), 1);
+}
+
+fclose($fp);
+$im = imagecreatefromwbmp($filename);
+unlink($filename);
+?>
+--EXPECTF--
+gd warning: product of memory allocation multiplication would exceed INT_MAX, failing operation gracefully
+
+Warning: imagecreatefromwbmp(): '%s_tmp.wbmp' is not a valid WBMP file in %s on line %d
--TEST--
gif --> gd1/gd2 conversion test
--SKIPIF--
-<?php
+<?php
if (!extension_loaded('gd')) {
die("skip gd extension not available.");
}
- if (!GD_BUNDLED) {
- die("skip external GD libraries always fail");
- }
+
if (!function_exists("imagecreatefromgif")) {
die("skip gif read support unavailable");
}
echo "GIF to GD1 conversion: ";
echo imagegd(imagecreatefromgif($cwd . "/conv_test.gif"), $cwd . "/test.gd1") ? 'ok' : 'failed';
echo "\n";
-
+
echo "GIF to GD2 conversion: ";
echo imagegd2(imagecreatefromgif($cwd . "/conv_test.gif"), $cwd . "/test.gd2") ? 'ok' : 'failed';
echo "\n";
-
+
@unlink($cwd . "/test.gd1");
@unlink($cwd . "/test.gd2");
?>
--TEST--
gif --> jpeg conversion test
--SKIPIF--
-<?php
+<?php
if (!extension_loaded('gd')) {
die("skip gd extension not available.");
}
- if (!GD_BUNDLED) {
- die("skip external GD libraries always fail");
- }
+
if (!function_exists("imagejpeg")) {
die("skip jpeg support unavailable");
}
echo "GIF to JPEG conversion: ";
echo imagejpeg(imagecreatefromgif($cwd . "/conv_test.gif"), $cwd . "/test_gif.jpeg") ? 'ok' : 'failed';
echo "\n";
-
+
@unlink($cwd . "/test_gif.jpeg");
?>
--EXPECT--
--TEST--
gif --> png conversion test
--SKIPIF--
-<?php
+<?php
if (!extension_loaded('gd')) {
die("skip gd extension not available.");
}
- if (!GD_BUNDLED) {
- die("skip external GD libraries always fail");
- }
+
if (!function_exists("imagepng")) {
die("skip png support unavailable");
}
echo "GIF to PNG conversion: ";
echo imagepng(imagecreatefromgif($cwd . "/conv_test.gif"), $cwd . "/test_gif.png") ? 'ok' : 'failed';
echo "\n";
-
+
@unlink($cwd . "/test_gif.png");
?>
--EXPECT--
--TEST--
imagefilter() function test
--SKIPIF--
-<?php
+<?php
if (!extension_loaded('gd')) {
die("skip gd extension not available.");
}
- if (!GD_BUNDLED) {
- die("skip this test requires bundled gd library.");
- }
+ if (!function_exists("imagefilter")) die("skip requires bundled GD library\n");
?>
--FILE--
<?php
"IMG_FILTER_NEGATE",
"IMG_FILTER_GRAYSCALE",
"IMG_FILTER_EDGEDETECT",
- "IMG_FILTER_GAUSSIAN_BLUR",
+ "IMG_FILTER_GAUSSIAN_BLUR",
"IMG_FILTER_SELECTIVE_BLUR",
"IMG_FILTER_EMBOSS",
"IMG_FILTER_MEAN_REMOVAL"
$SAVE_DIR = dirname(__FILE__);
$SOURCE_IMG = $SAVE_DIR . "/test.png";
-
+
foreach ($no_arg_filters as $filt) {
$im = imagecreatefrompng($SOURCE_IMG);
if (imagefilter($im, constant($filt))) {
} else {
echo "$filt failed\n";
}
- }
+ }
$im = imagecreatefrompng($SOURCE_IMG);
-
+
if (imagefilter($im, IMG_FILTER_SMOOTH, -1924.124)) {
imagepng($im, $SAVE_DIR . "/IMG_FILTER_SMOOTH.png");
echo "IMG_FILTER_SMOOTH success\n";
} else {
echo "IMG_FILTER_SMOOTH failed\n";
}
-
+
$im = imagecreatefrompng($SOURCE_IMG);
-
+
if (imagefilter($im, IMG_FILTER_COLORIZE, -127.12, -127.98, 127)) {
imagepng($im, $SAVE_DIR . "/IMG_FILTER_COLORIZE.png");
echo "IMG_FILTER_COLORIZE success\n";
} else {
echo "IMG_FILTER_COLORIZE failed\n";
}
-
+
$im = imagecreatefrompng($SOURCE_IMG);
-
+
if (imagefilter($im, IMG_FILTER_CONTRAST, -90)) {
imagepng($im, $SAVE_DIR . "/IMG_FILTER_CONTRAST.png");
echo "IMG_FILTER_CONTRAST success\n";
}
$im = imagecreatefrompng($SOURCE_IMG);
-
+
if (imagefilter($im, IMG_FILTER_BRIGHTNESS, 98)) {
imagepng($im, $SAVE_DIR . "/IMG_FILTER_BRIGHTNESS.png");
echo "IMG_FILTER_BRIGHTNESS success\n";
--SKIPIF--
<?php
if (!function_exists('imagecreatefromwbmp')) die("skip gd extension not available\n");
- if (!GD_BUNDLED) die('skip external GD libraries always fail');
?>
--FILE--
<?php
--TEST--
jpeg <--> png conversion test
--SKIPIF--
-<?php
+<?php
if (!extension_loaded('gd')) {
die("skip gd extension not available.");
}
- if (!GD_BUNDLED) {
- die("skip external GD libraries always fail");
- }
+
if (!function_exists("imagecreatefrompng") || !function_exists("imagepng")) {
die("skip png support unavailable");
}
echo "PNG to JPEG conversion: ";
echo imagejpeg(imagecreatefrompng($cwd . "/conv_test.png"), $cwd . "/test_jpeg.jpeg") ? 'ok' : 'failed';
echo "\n";
-
+
echo "Generated JPEG to PNG conversion: ";
echo imagepng(imagecreatefromjpeg($cwd . "/test_jpeg.jpeg"), $cwd . "/test_jpng.png") ? 'ok' : 'failed';
echo "\n";
-
+
echo "JPEG to PNG conversion: ";
echo imagepng(imagecreatefromjpeg($cwd . "/conv_test.jpeg"), $cwd . "/test_png.png") ? 'ok' : 'failed';
echo "\n";
-
+
echo "Generated PNG to JPEG conversion: ";
echo imagejpeg(imagecreatefrompng($cwd . "/test_png.png"), $cwd . "/test_pjpeg.jpeg") ? 'ok' : 'failed';
echo "\n";
-
+
@unlink($cwd . "/test_jpeg.jpeg");
@unlink($cwd . "/test_jpng.png");
@unlink($cwd . "/test_png.png");
--TEST--
jpeg <--> gd1/gd2 conversion test
--SKIPIF--
-<?php
+<?php
if (!extension_loaded('gd')) {
die("skip gd extension not available.");
}
- if (!GD_BUNDLED) {
- die("skip external GD libraries always fail");
- }
+
if (!function_exists("imagecreatefromjpeg") || !function_exists("imagejpeg")) {
die("skip jpeg support unavailable");
}
echo "JPEG to GD1 conversion: ";
echo imagegd(imagecreatefromjpeg($cwd . "/conv_test.jpeg"), $cwd . "/test.gd1") ? 'ok' : 'failed';
echo "\n";
-
+
echo "JPEG to GD2 conversion: ";
echo imagegd2(imagecreatefromjpeg($cwd . "/conv_test.jpeg"), $cwd . "/test.gd2") ? 'ok' : 'failed';
echo "\n";
-
+
echo "GD1 to JPEG conversion: ";
echo imagejpeg(imagecreatefromgd($cwd . "/test.gd1"), $cwd . "/test_gd1.jpeg") ? 'ok' : 'failed';
echo "\n";
-
+
echo "GD2 to JPEG conversion: ";
echo imagejpeg(imagecreatefromgd2($cwd . "/test.gd2"), $cwd . "/test_gd2.jpeg") ? 'ok' : 'failed';
echo "\n";
-
+
@unlink($cwd . "/test.gd1");
@unlink($cwd . "/test.gd2");
@unlink($cwd . "/test_gd1.jpeg");
--TEST--
libgd #86 (Possible infinite loop in imagecreatefrompng)
--SKIPIF--
-<?php
- if (!extension_loaded('gd')) die("skip gd extension not available\n");
- if (!GD_BUNDLED) die('skip external GD libraries always fail');
+<?php
+ if (!extension_loaded('gd')) die("skip gd extension not available\n");
+ if (!GD_BUNDLED) die("skip requires bundled GD library\n");
?>
--FILE--
<?php
--- /dev/null
+--TEST--
+libgd #86 (Possible infinite loop in imagecreatefrompng)
+--SKIPIF--
+<?php
+ if (!extension_loaded('gd')) die("skip gd extension not available\n");
+ if (GD_BUNDLED) die("skip requires external GD library\n");
+?>
+--FILE--
+<?php
+
+$im = imagecreatefrompng(dirname(__FILE__) . '/libgd00086.png');
+var_dump($im);
+?>
+--EXPECTF--
+gd-png: fatal libpng error: Read Error: truncated data
+gd-png error: setjmp returns error condition 1
+
+Warning: imagecreatefrompng(): '%slibgd00086.png' is not a valid PNG file in %s on line %d
+bool(false)
--TEST--
png <--> gd1/gd2 conversion test
--SKIPIF--
-<?php
+<?php
if (!extension_loaded('gd')) {
die("skip gd extension not available.");
}
- if (!GD_BUNDLED) {
- die("skip external GD libraries always fail");
- }
+
if (!function_exists("imagecreatefrompng") || !function_exists("imagepng")) {
die("skip png support unavailable");
}
echo "PNG to GD1 conversion: ";
echo imagegd(imagecreatefrompng($cwd . "/conv_test.png"), $cwd . "/test.gd1") ? 'ok' : 'failed';
echo "\n";
-
+
echo "PNG to GD2 conversion: ";
echo imagegd2(imagecreatefrompng($cwd . "/conv_test.png"), $cwd . "/test.gd2") ? 'ok' : 'failed';
echo "\n";
-
+
echo "GD1 to PNG conversion: ";
echo imagepng(imagecreatefromgd($cwd . "/test.gd1"), $cwd . "/test_gd1.png") ? 'ok' : 'failed';
echo "\n";
-
+
echo "GD2 to PNG conversion: ";
echo imagepng(imagecreatefromgd2($cwd . "/test.gd2"), $cwd . "/test_gd2.png") ? 'ok' : 'failed';
echo "\n";
-
+
@unlink($cwd . "/test.gd1");
@unlink($cwd . "/test.gd2");
@unlink($cwd . "/test_gd1.png");
--TEST--
png compression test
--SKIPIF--
-<?php
+<?php
if (!extension_loaded('gd')) {
die("skip gd extension not available.");
}
- if (!GD_BUNDLED) {
- die("skip external GD libraries always fail");
- }
+
if (!function_exists("imagecreatefrompng") || !function_exists("imagepng")) {
die("skip png support unavailable");
}
if ($col == 0xffffff) {
echo "ok\n";
}
-
+
@unlink($cwd . "/test_pngcomp.png");
?>
--EXPECT--
--TEST--
xpm --> gd1/gd2 conversion test
--SKIPIF--
-<?php
+<?php
if (!extension_loaded('gd')) {
die("skip gd extension not available.");
}
- if (!GD_BUNDLED) {
- die("skip external GD libraries always fail");
- }
+
if (!function_exists("imagecreatefromxpm")) {
die("skip xpm read support unavailable");
}
echo "XPM to GD1 conversion: ";
echo imagegd(imagecreatefromxpm($cwd . "/conv_test.xpm"), $cwd . "/test.gd1") ? 'ok' : 'failed';
echo "\n";
-
+
echo "XPM to GD2 conversion: ";
echo imagegd2(imagecreatefromxpm($cwd . "/conv_test.xpm"), $cwd . "/test.gd2") ? 'ok' : 'failed';
echo "\n";
-
+
@unlink($cwd . "/test.gd1");
@unlink($cwd . "/test.gd2");
?>
--TEST--
xpm --> jpeg conversion test
--SKIPIF--
-<?php
+<?php
if (!extension_loaded('gd')) {
die("skip gd extension not available.");
}
- if (!GD_BUNDLED) {
- die("skip external GD libraries always fail");
- }
+
if (!function_exists("imagejpeg")) {
die("skip jpeg support unavailable");
}
echo "XPM to JPEG conversion: ";
echo imagejpeg(imagecreatefromxpm($cwd . "/conv_test.xpm"), $cwd . "/test_xpm.jpeg") ? 'ok' : 'failed';
echo "\n";
-
+
@unlink($cwd . "/test_xpm.jpeg");
?>
--EXPECT--
--TEST--
xpm --> png conversion test
--SKIPIF--
-<?php
+<?php
if (!extension_loaded('gd')) {
die("skip gd extension not available.");
}
- if (!GD_BUNDLED) {
- die("skip external GD libraries always fail");
- }
+
if (!function_exists("imagepng")) {
die("skip png support unavailable");
}
echo "XPM to PNG conversion: ";
echo imagepng(imagecreatefromxpm($cwd . "/conv_test.xpm"), $cwd . "/test_xpm.png") ? 'ok' : 'failed';
echo "\n";
-
+
@unlink($cwd . "/test_xpm.png");
?>
--EXPECT--