]> granicus.if.org Git - php/commitdiff
Don't throw from imagecreatefromstring() with too short string
authorNikita Popov <nikita.ppv@gmail.com>
Wed, 2 Dec 2020 09:51:55 +0000 (10:51 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Wed, 2 Dec 2020 09:51:55 +0000 (10:51 +0100)
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.

ext/gd/gd.c
ext/gd/tests/createfromstring.phpt

index 88d04824eac9d6d87810c36c9c7fc938577f8e29..7a50fb423ede019dad472a2e148440f166e1ec2e 100644 (file)
@@ -1483,8 +1483,9 @@ PHP_FUNCTION(imagecreatefromstring)
        }
 
        if (ZSTR_LEN(data) < sizeof(sig)) {
-               zend_argument_value_error(1, "cannot be empty");
-               RETURN_THROWS();
+               /* Handle this the same way as an unknown image type. */
+               php_error_docref(NULL, E_WARNING, "Data is not in a recognized format");
+               RETURN_FALSE;
        }
 
        memcpy(sig, ZSTR_VAL(data), sizeof(sig));
index 6586d17c31d7f7648df9b4d78cccb6790db54df8..f3e40b26a90077b31a690a6de0922b3a0941dcda 100644 (file)
@@ -62,6 +62,7 @@ $im = imagecreatefromstring(' asdf jklp foo');
 --EXPECTF--
 createfromstring truecolor png: ok
 createfromstring palette png: ok
-imagecreatefromstring(): Argument #1 ($data) cannot be empty
 
-Warning: imagecreatefromstring(): Data is not in a recognized format in %screatefromstring.php on line %d
+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