diff --git a/ext/gd/gd.c b/ext/gd/gd.c index 4221999385a1..5ecb393feac6 100644 --- a/ext/gd/gd.c +++ b/ext/gd/gd.c @@ -1425,6 +1425,7 @@ PHP_FUNCTION(imagecreatefromstring) if (ZSTR_LEN(data) > INT_MAX) { zend_argument_value_error(1, "is too long"); + RETURN_THROWS(); } imtype = _php_image_type(data); diff --git a/ext/gd/tests/imagecreatefromstring_too_long.phpt b/ext/gd/tests/imagecreatefromstring_too_long.phpt new file mode 100644 index 000000000000..97ab5c9e495d --- /dev/null +++ b/ext/gd/tests/imagecreatefromstring_too_long.phpt @@ -0,0 +1,24 @@ +--TEST-- +imagecreatefromstring(): a string longer than INT_MAX throws without decoding it +--EXTENSIONS-- +gd +--SKIPIF-- + +--INI-- +memory_limit=-1 +--FILE-- +getMessage(), "\n"; +} +echo "Done\n"; +?> +--EXPECT-- +imagecreatefromstring(): Argument #1 ($data) is too long +Done