Fix GH-17703: imagescale both width and heigh set with negative values.

Throwing a ValueError in this particular case.

close GH-17708
This commit is contained in:
David Carlier 2025-02-05 12:34:39 +00:00
parent e9d4fc184d
commit dc7b661a60
No known key found for this signature in database
GPG key ID: 2FB76A8CE6CD2B41
4 changed files with 29 additions and 0 deletions

4
NEWS
View file

@ -18,6 +18,10 @@ PHP NEWS
. Fixed bug GH-17609 (Typo in error message: Dom\NO_DEFAULT_NS instead of
Dom\HTML_NO_DEFAULT_NS). (nielsdos)
- GD:
. Fixed bug GH-17703 (imagescale with both width and height negative values
triggers only an Exception on width). (David Carlier)
- MBString:
. Fixed bug GH-17503 (Undefined float conversion in mb_convert_variables).
(cmb)

View file

@ -627,6 +627,9 @@ PHP 8.4 UPGRADE NOTES
. DOMDocument::registerNodeClass() now has a tentative return type of true.
Previously, the return type was bool but only true could be returned in practice.
- GD:
. imagescale now throws a ValueError when both width and height arguments are negative.
- Hash:
. Changed the return type of hash_update() to true. It was already the case that only
true could be returned, but the stub was not updated yet.

View file

@ -3981,6 +3981,11 @@ PHP_FUNCTION(imagescale)
im = php_gd_libgdimageptr_from_zval_p(IM);
if (tmp_h < 0 && tmp_w < 0) {
zend_value_error("Argument #2 ($width) and argument #3 ($height) cannot be both negative");
RETURN_THROWS();
}
if (tmp_h < 0 || tmp_w < 0) {
/* preserve ratio */
long src_x, src_y;

17
ext/gd/tests/gh17703.phpt Normal file
View file

@ -0,0 +1,17 @@
--TEST--
GH-17703 both width and height value being negative triggers ValueError on width.
--EXTENSIONS--
gd
--FILE--
<?php
$img = imagecreatetruecolor ( 256, 1);
try {
imagescale($img, -1, -1, 0);
} catch (\ValueError $e) {
echo $e->getMessage();
}
?>
--EXPECT--
Argument #2 ($width) and argument #3 ($height) cannot be both negative