summaryrefslogtreecommitdiff
path: root/ext/gd
diff options
context:
space:
mode:
authorSascha Schumann <sas@php.net>2003-04-03 19:18:57 +0000
committerSascha Schumann <sas@php.net>2003-04-03 19:18:57 +0000
commitc2e24238384745c94934f052f5d4e2a9568e2241 (patch)
treede89991bb800fd53e3e7a4e7b984661ff1d35640 /ext/gd
parente3f1641527407cd04aeb97f1f42dd78c54aef588 (diff)
downloadphp-git-c2e24238384745c94934f052f5d4e2a9568e2241.tar.gz
Fix segfaults in imagecreate/imagecreatetruecolor
Diffstat (limited to 'ext/gd')
-rw-r--r--ext/gd/gd.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/ext/gd/gd.c b/ext/gd/gd.c
index 1db01779e8..53fc513ea1 100644
--- a/ext/gd/gd.c
+++ b/ext/gd/gd.c
@@ -800,6 +800,12 @@ PHP_FUNCTION(imagecreatetruecolor)
convert_to_long_ex(x_size);
convert_to_long_ex(y_size);
+ if (Z_LVAL_PP(x_size) <= 0
+ || Z_LVAL_PP(y_size) <= 0) {
+ php_error(E_WARNING, "invalid image dimensions");
+ RETURN_FALSE;
+ }
+
im = gdImageCreateTrueColor(Z_LVAL_PP(x_size), Z_LVAL_PP(y_size));
ZEND_REGISTER_RESOURCE(return_value, im, le_gd);
@@ -1243,6 +1249,12 @@ PHP_FUNCTION(imagecreate)
convert_to_long_ex(x_size);
convert_to_long_ex(y_size);
+ if (Z_LVAL_PP(x_size) <= 0
+ || Z_LVAL_PP(y_size) <= 0) {
+ php_error(E_WARNING, "invalid image dimensions");
+ RETURN_FALSE;
+ }
+
im = gdImageCreate(Z_LVAL_PP(x_size), Z_LVAL_PP(y_size));
ZEND_REGISTER_RESOURCE(return_value, im, le_gd);