mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
Merge branch 'PHP-8.5'
* PHP-8.5: output: Fail starting to output buffer when the output layer is deactivated (#20846)
This commit is contained in:
@@ -538,6 +538,10 @@ PHPAPI zend_result php_output_handler_start(php_output_handler *handler)
|
||||
HashTable *rconflicts;
|
||||
php_output_handler_conflict_check_t conflict;
|
||||
|
||||
if (!(OG(flags) & PHP_OUTPUT_ACTIVATED)) {
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
if (php_output_lock_error(PHP_OUTPUT_HANDLER_START) || !handler) {
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
@@ -21,4 +21,7 @@ ob_start(new Test, 1);
|
||||
echo "trigger bug";
|
||||
?>
|
||||
--EXPECTF--
|
||||
%r(Notice: ob_start\(\): Failed to create buffer in [^\r\n]+ on line \d+\r?\n(\r?\n)?)+%r
|
||||
Notice: ob_start(): Failed to create buffer in %s on line %d
|
||||
|
||||
Fatal error: ob_start(): Cannot use output buffering in output buffering display handlers in %s on line %d
|
||||
|
||||
23
tests/output/gh20837.phpt
Normal file
23
tests/output/gh20837.phpt
Normal file
@@ -0,0 +1,23 @@
|
||||
--TEST--
|
||||
ob_start(): NULL dereference when calling ob_start() in shutdown function triggered by bailout in php_output_lock_error()
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
register_shutdown_function(function () {
|
||||
ob_start(function ($input) {
|
||||
echo "bar";
|
||||
return strtoupper($input);
|
||||
});
|
||||
});
|
||||
|
||||
ob_start(function () {
|
||||
ob_start();
|
||||
}, 1);
|
||||
|
||||
echo "foo";
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
Fatal error: ob_start(): Cannot use output buffering in output buffering display handlers in %s on line %d
|
||||
|
||||
Notice: ob_start(): Failed to create buffer in %s on line %d
|
||||
Reference in New Issue
Block a user