1
0
mirror of https://github.com/php/php-src.git synced 2026-03-25 16:52:18 +01:00
Files
archived-php-src/ext/gd/tests/createfromstring.phpt
Nikita Popov a89aaf6c38 Don't throw from imagecreatefromstring() with too short string
If the string is too short, we should treat this the same way as
an unrecognized image type. This function should be usable to
determine whether something is a valid image without doing any
checks beforehand.
2020-12-02 10:51:55 +01:00

69 lines
1.6 KiB
PHP

--TEST--
imagecreatefromstring
--SKIPIF--
<?php
if (!function_exists('imagecreatefromstring')) die("skip gd extension not available\n");
if (!function_exists('imagepng')) die("skip no imagpng()\n");
?>
--FILE--
<?php
$dir = __DIR__;
$im = imagecreatetruecolor(5,5);
imagefill($im, 0,0, 0xffffff);
imagesetpixel($im, 3,3, 0x0);
imagepng($im, $dir . '/tc.png');
$im_string = file_get_contents(__DIR__ . '/tc.png');
$im = imagecreatefromstring($im_string);
echo 'createfromstring truecolor png: ';
if (imagecolorat($im, 3,3) != 0x0) {
echo 'failed';
} else {
echo 'ok';
}
echo "\n";
unlink($dir . '/tc.png');
$im = imagecreate(5,5);
$c1 = imagecolorallocate($im, 255,255,255);
$c2 = imagecolorallocate($im, 255,0,0);
imagefill($im, 0,0, $c1);
imagesetpixel($im, 3,3, $c2);
imagepng($im, $dir . '/p.png');
$im_string = file_get_contents(__DIR__ . '/p.png');
$im = imagecreatefromstring($im_string);
echo'createfromstring palette png: ';
$c = imagecolorsforindex($im, imagecolorat($im, 3,3));
$failed = false;
if ($c['red'] != 255 || $c['green'] != 0 || $c['blue'] != 0) {
echo 'failed';
} else {
echo 'ok';
}
echo "\n";
unlink($dir . '/p.png');
//empty string
try {
imagecreatefromstring('');
} catch (ValueError $exception) {
echo $exception->getMessage() . "\n";
}
//random string > 12
$im = imagecreatefromstring(' asdf jklp foo');
?>
--EXPECTF--
createfromstring truecolor png: ok
createfromstring palette png: ok
Warning: imagecreatefromstring(): Data is not in a recognized format in %s on line %d
Warning: imagecreatefromstring(): Data is not in a recognized format in %s on line %d