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 . Fixed bug GH-17609 (Typo in error message: Dom\NO_DEFAULT_NS instead of
Dom\HTML_NO_DEFAULT_NS). (nielsdos) 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: - MBString:
. Fixed bug GH-17503 (Undefined float conversion in mb_convert_variables). . Fixed bug GH-17503 (Undefined float conversion in mb_convert_variables).
(cmb) (cmb)

View file

@ -627,6 +627,9 @@ PHP 8.4 UPGRADE NOTES
. DOMDocument::registerNodeClass() now has a tentative return type of true. . DOMDocument::registerNodeClass() now has a tentative return type of true.
Previously, the return type was bool but only true could be returned in practice. 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: - Hash:
. Changed the return type of hash_update() to true. It was already the case that only . 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. 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); 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) { if (tmp_h < 0 || tmp_w < 0) {
/* preserve ratio */ /* preserve ratio */
long src_x, src_y; 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