]> granicus.if.org Git - php/commitdiff
Warnings for image colour range check now throw exceptions
authorMark <mrandall@digitellinc.com>
Wed, 4 Sep 2019 00:09:41 +0000 (02:09 +0200)
committerChristoph M. Becker <cmbecker69@gmx.de>
Wed, 4 Sep 2019 10:27:08 +0000 (12:27 +0200)
ext/gd/gd.c
ext/gd/tests/imagecolorallocate_variation5.phpt
ext/gd/tests/imagecolorallocate_variation6.phpt

index 3aead99242a59c3d2cf85237950d42ba5c805834..0837f83084b45caf7f5b0c949d0abd14b5ef9951 100644 (file)
@@ -1109,8 +1109,8 @@ PHP_FUNCTION(imagelayereffect)
 
 #define CHECK_RGBA_RANGE(component, name) \
        if (component < 0 || component > gd##name##Max) { \
-               php_error_docref(NULL, E_WARNING, #name " component is out of range"); \
-               RETURN_FALSE; \
+               zend_throw_error(NULL, #name " component is out of range, must be between 0 and %d (inclusive)", gd##name##Max); \
+               return; \
        }
 
 /* {{{ proto int imagecolorallocatealpha(resource im, int red, int green, int blue, int alpha)
index ac3e4bb20e0801438a90e25e2e58497a3f6aeb91..7d4b94106986145d7476fc75068baf961bfb3c9f 100644 (file)
@@ -11,6 +11,8 @@ if(!function_exists('imagecreatetruecolor')) {
 ?>
 --FILE--
 <?php
+require __DIR__ . '/func.inc';
+
 /* Prototype  : int imagecolorallocate(resource im, int red, int green, int blue)
  * Description:  Allocate a color for an image
  * Source code: ext/gd/gd.c
@@ -38,14 +40,17 @@ $values = array(
 
 // loop through each element of the array for blue
 foreach($values as $key => $value) {
-      echo "\n--$key--\n";
-      var_dump( imagecolorallocate($im, $value, $green, $blue) );
-      var_dump( imagecolorallocate($im, $red, $value, $blue) );
-      var_dump( imagecolorallocate($im, $red, $green, $value) );
+    echo "\n--$key--\n";
+
+    trycatch_dump(
+        fn() => imagecolorallocate($im, $value, $green, $blue),
+        fn() => imagecolorallocate($im, $red, $value, $blue),
+        fn() => imagecolorallocate($im, $red, $green, $value)
+    );
 };
 ?>
 ===DONE===
---EXPECTF--
+--EXPECT--
 *** Testing imagecolorallocate() : usage variations ***
 
 --Octal 000--
@@ -59,15 +64,9 @@ int(657930)
 int(657930)
 
 --Octal -012--
-
-Warning: imagecolorallocate(): Red component is out of range in %s on line %d
-bool(false)
-
-Warning: imagecolorallocate(): Green component is out of range in %s on line %d
-bool(false)
-
-Warning: imagecolorallocate(): Blue component is out of range in %s on line %d
-bool(false)
+!! [Error] Red component is out of range, must be between 0 and 255 (inclusive)
+!! [Error] Green component is out of range, must be between 0 and 255 (inclusive)
+!! [Error] Blue component is out of range, must be between 0 and 255 (inclusive)
 
 --Octal 0377--
 int(16714250)
@@ -85,15 +84,9 @@ int(657930)
 int(657930)
 
 --Hexa-decimal -0xA--
-
-Warning: imagecolorallocate(): Red component is out of range in %s on line %d
-bool(false)
-
-Warning: imagecolorallocate(): Green component is out of range in %s on line %d
-bool(false)
-
-Warning: imagecolorallocate(): Blue component is out of range in %s on line %d
-bool(false)
+!! [Error] Red component is out of range, must be between 0 and 255 (inclusive)
+!! [Error] Green component is out of range, must be between 0 and 255 (inclusive)
+!! [Error] Blue component is out of range, must be between 0 and 255 (inclusive)
 
 --Hexa-decimal 0xFF--
 int(16714250)
index a3649be71f6d738b0b3b4a4775240962c962489e..6b2eb8ba2ff6f07c1cdb53fe6b4447234d9c7852 100644 (file)
@@ -11,6 +11,8 @@ if(!function_exists('imagecreatetruecolor')) {
 ?>
 --FILE--
 <?php
+require  __DIR__ . '/func.inc';
+
 /* Prototype  : int imagecolorallocate(resource im, int red, int green, int blue)
  * Description:  Allocate a color for an image
  * Source code: ext/gd/gd.c
@@ -34,75 +36,42 @@ foreach($values as $key => $value) {
       //Need to be created every time to get expected return value
       $im_palette = imagecreate(200, 200);
       $im_true_color = imagecreatetruecolor(200, 200);
-      var_dump( imagecolorallocate($im_palette, $value, 0, 0) );
-      var_dump( imagecolorallocate($im_true_color, $value, 0, 0) );
-      var_dump( imagecolorallocate($im_palette, 0, $value, 0) );
-      var_dump( imagecolorallocate($im_true_color, 0, $value, 0) );
-      var_dump( imagecolorallocate($im_palette, 0, 0, $value) );
-      var_dump( imagecolorallocate($im_true_color, 0, 0, $value) );
+
+      trycatch_dump(
+          fn() => imagecolorallocate($im_palette, $value, 0, 0),
+          fn() => imagecolorallocate($im_true_color, $value, 0, 0),
+          fn() => imagecolorallocate($im_palette, 0, $value, 0),
+          fn() => imagecolorallocate($im_true_color, 0, $value, 0),
+          fn() => imagecolorallocate($im_palette, 0, 0, $value),
+          fn() => imagecolorallocate($im_true_color, 0, 0, $value)
+      );
 };
 ?>
 ===DONE===
---EXPECTF--
+--EXPECT--
 *** Testing imagecolorallocate() : usage variations ***
 
 --Decimal 256--
-
-Warning: imagecolorallocate(): Red component is out of range in %s on line %d
-bool(false)
-
-Warning: imagecolorallocate(): Red component is out of range in %s on line %d
-bool(false)
-
-Warning: imagecolorallocate(): Green component is out of range in %s on line %d
-bool(false)
-
-Warning: imagecolorallocate(): Green component is out of range in %s on line %d
-bool(false)
-
-Warning: imagecolorallocate(): Blue component is out of range in %s on line %d
-bool(false)
-
-Warning: imagecolorallocate(): Blue component is out of range in %s on line %d
-bool(false)
+!! [Error] Red component is out of range, must be between 0 and 255 (inclusive)
+!! [Error] Red component is out of range, must be between 0 and 255 (inclusive)
+!! [Error] Green component is out of range, must be between 0 and 255 (inclusive)
+!! [Error] Green component is out of range, must be between 0 and 255 (inclusive)
+!! [Error] Blue component is out of range, must be between 0 and 255 (inclusive)
+!! [Error] Blue component is out of range, must be between 0 and 255 (inclusive)
 
 --Octal 0400--
-
-Warning: imagecolorallocate(): Red component is out of range in %s on line %d
-bool(false)
-
-Warning: imagecolorallocate(): Red component is out of range in %s on line %d
-bool(false)
-
-Warning: imagecolorallocate(): Green component is out of range in %s on line %d
-bool(false)
-
-Warning: imagecolorallocate(): Green component is out of range in %s on line %d
-bool(false)
-
-Warning: imagecolorallocate(): Blue component is out of range in %s on line %d
-bool(false)
-
-Warning: imagecolorallocate(): Blue component is out of range in %s on line %d
-bool(false)
+!! [Error] Red component is out of range, must be between 0 and 255 (inclusive)
+!! [Error] Red component is out of range, must be between 0 and 255 (inclusive)
+!! [Error] Green component is out of range, must be between 0 and 255 (inclusive)
+!! [Error] Green component is out of range, must be between 0 and 255 (inclusive)
+!! [Error] Blue component is out of range, must be between 0 and 255 (inclusive)
+!! [Error] Blue component is out of range, must be between 0 and 255 (inclusive)
 
 --Hexa-decimal 0x100--
-
-Warning: imagecolorallocate(): Red component is out of range in %s on line %d
-bool(false)
-
-Warning: imagecolorallocate(): Red component is out of range in %s on line %d
-bool(false)
-
-Warning: imagecolorallocate(): Green component is out of range in %s on line %d
-bool(false)
-
-Warning: imagecolorallocate(): Green component is out of range in %s on line %d
-bool(false)
-
-Warning: imagecolorallocate(): Blue component is out of range in %s on line %d
-bool(false)
-
-Warning: imagecolorallocate(): Blue component is out of range in %s on line %d
-bool(false)
+!! [Error] Red component is out of range, must be between 0 and 255 (inclusive)
+!! [Error] Red component is out of range, must be between 0 and 255 (inclusive)
+!! [Error] Green component is out of range, must be between 0 and 255 (inclusive)
+!! [Error] Green component is out of range, must be between 0 and 255 (inclusive)
+!! [Error] Blue component is out of range, must be between 0 and 255 (inclusive)
+!! [Error] Blue component is out of range, must be between 0 and 255 (inclusive)
 ===DONE===