From: Pierre Joye Date: Thu, 17 Jul 2008 23:13:09 +0000 (+0000) Subject: - MFB: fix crash when some crafted font are given X-Git-Tag: php-5.3.0alpha1~294 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9a60aed6d1925c98b1b40c19b40f5b4b65baa26e;p=php - MFB: fix crash when some crafted font are given --- diff --git a/ext/gd/gd.c b/ext/gd/gd.c index cefa592901..c2e63b8ce9 100644 --- a/ext/gd/gd.c +++ b/ext/gd/gd.c @@ -1634,6 +1634,19 @@ PHP_FUNCTION(imageloadfont) body_size = font->w * font->h * font->nchars; } + if (overflow2(font->nchars, font->h)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error reading font, invalid font header"); + efree(font); + php_stream_close(stream); + RETURN_FALSE; + } + if (overflow2(font->nchars * font->h, font->w )) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error reading font, invalid font header"); + efree(font); + php_stream_close(stream); + RETURN_FALSE; + } + if (body_size != body_size_check) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error reading font"); efree(font); diff --git a/ext/gd/tests/imageloadfont_invalid.phpt b/ext/gd/tests/imageloadfont_invalid.phpt new file mode 100644 index 0000000000..b297ac73e2 --- /dev/null +++ b/ext/gd/tests/imageloadfont_invalid.phpt @@ -0,0 +1,25 @@ +--TEST-- +imageloadfont() function crashes +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Warning: imageloadfont(): gd warning: product of memory allocation multiplication would exceed INT_MAX, failing operation gracefully + in %simageloadfont_invalid.php on line %d + +Warning: imageloadfont(): Error reading font, invalid font header in %simageloadfont_invalid.php on line %d