laruence Sun, 13 Nov 2011 04:11:57 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=319117
Log: Fixed bug #60282 (Segfault when using ob_gzhandler() with open buffers) Bug: https://bugs.php.net/60282 (Assigned) Segfault when using ob_gzhandler() with open buffers Changed paths: U php/php-src/branches/PHP_5_4/NEWS U php/php-src/branches/PHP_5_4/main/output.c A php/php-src/branches/PHP_5_4/tests/output/bug60282.phpt U php/php-src/trunk/main/output.c A php/php-src/trunk/tests/output/bug60282.phpt Modified: php/php-src/branches/PHP_5_4/NEWS =================================================================== --- php/php-src/branches/PHP_5_4/NEWS 2011-11-12 23:01:24 UTC (rev 319116) +++ php/php-src/branches/PHP_5_4/NEWS 2011-11-13 04:11:57 UTC (rev 319117) @@ -10,6 +10,10 @@ . Fixed bug #59985 (show normal warning text for OCI_NO_DATA) (Chris Jones) +- Output: + . Fixed bug #60282 (Segfault when using ob_gzhandler() with open buffers). + (Laruence) + 11 Nov 2011, PHP 5.4.0 RC1 - General improvements: . Changed silent conversion of array to string to produce a notice. (Patrick) Modified: php/php-src/branches/PHP_5_4/main/output.c =================================================================== --- php/php-src/branches/PHP_5_4/main/output.c 2011-11-12 23:01:24 UTC (rev 319116) +++ php/php-src/branches/PHP_5_4/main/output.c 2011-11-13 04:11:57 UTC (rev 319117) @@ -508,14 +508,14 @@ * Check whether a certain output handler is in use */ PHPAPI int php_output_handler_started(const char *name, size_t name_len TSRMLS_DC) { - php_output_handler **handlers; + php_output_handler ***handlers; int i, count = php_output_get_level(TSRMLS_C); if (count) { - handlers = *(php_output_handler ***) zend_stack_base(&OG(handlers)); + handlers = (php_output_handler ***) zend_stack_base(&OG(handlers)); for (i = 0; i < count; ++i) { - if (name_len == handlers[i]->name_len && !memcmp(handlers[i]->name, name, name_len)) { + if (name_len == (*(handlers[i]))->name_len && !memcmp((*(handlers[i]))->name, name, name_len)) { return 1; } } Added: php/php-src/branches/PHP_5_4/tests/output/bug60282.phpt =================================================================== --- php/php-src/branches/PHP_5_4/tests/output/bug60282.phpt (rev 0) +++ php/php-src/branches/PHP_5_4/tests/output/bug60282.phpt 2011-11-13 04:11:57 UTC (rev 319117) @@ -0,0 +1,10 @@ +--TEST-- +Bug #60282 (Segfault when using ob_gzhandler() with open buffers) +--FILE-- +<?php +ob_start(); +ob_start(); +ob_start('ob_gzhandler'); +echo "done"; +--EXPECT-- +done Modified: php/php-src/trunk/main/output.c =================================================================== --- php/php-src/trunk/main/output.c 2011-11-12 23:01:24 UTC (rev 319116) +++ php/php-src/trunk/main/output.c 2011-11-13 04:11:57 UTC (rev 319117) @@ -508,14 +508,14 @@ * Check whether a certain output handler is in use */ PHPAPI int php_output_handler_started(const char *name, size_t name_len TSRMLS_DC) { - php_output_handler **handlers; + php_output_handler ***handlers; int i, count = php_output_get_level(TSRMLS_C); if (count) { - handlers = *(php_output_handler ***) zend_stack_base(&OG(handlers)); + handlers = (php_output_handler ***) zend_stack_base(&OG(handlers)); for (i = 0; i < count; ++i) { - if (name_len == handlers[i]->name_len && !memcmp(handlers[i]->name, name, name_len)) { + if (name_len == (*(handlers[i]))->name_len && !memcmp((*(handlers[i]))->name, name, name_len)) { return 1; } } Added: php/php-src/trunk/tests/output/bug60282.phpt =================================================================== --- php/php-src/trunk/tests/output/bug60282.phpt (rev 0) +++ php/php-src/trunk/tests/output/bug60282.phpt 2011-11-13 04:11:57 UTC (rev 319117) @@ -0,0 +1,10 @@ +--TEST-- +Bug #60282 (Segfault when using ob_gzhandler() with open buffers) +--FILE-- +<?php +ob_start(); +ob_start(); +ob_start('ob_gzhandler'); +echo "done"; +--EXPECT-- +done
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php