Skip to content

Commit f27090c

Browse files
committed
Merge branch 'PHP-8.3'
* PHP-8.3: Fixed GH-12564: The negative fiber.stack_size setting leads to crash
2 parents d7fc3ab + 032a293 commit f27090c

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
--TEST--
2+
fiber.stack_size must be a positive number
3+
--FILE--
4+
<?php
5+
ini_set("fiber.stack_size","-1");
6+
$fiber = new Fiber(function() {});
7+
try {
8+
$fiber->start();
9+
} catch (Throwable $e) {
10+
echo "Exception: " . $e->getMessage()."\n";
11+
}
12+
?>
13+
DONE
14+
--EXPECTF--
15+
Warning: fiber.stack_size must be a positive number in %snegative_stack_size.php on line 2
16+
DONE

Zend/zend.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,12 @@ static ZEND_INI_MH(OnUpdateReservedStackSize) /* {{{ */
230230
static ZEND_INI_MH(OnUpdateFiberStackSize) /* {{{ */
231231
{
232232
if (new_value) {
233-
EG(fiber_stack_size) = zend_ini_parse_uquantity_warn(new_value, entry->name);
233+
zend_long tmp = zend_ini_parse_quantity_warn(new_value, entry->name);
234+
if (tmp < 0) {
235+
zend_error(E_WARNING, "fiber.stack_size must be a positive number");
236+
return FAILURE;
237+
}
238+
EG(fiber_stack_size) = tmp;
234239
} else {
235240
EG(fiber_stack_size) = ZEND_FIBER_DEFAULT_C_STACK_SIZE;
236241
}

0 commit comments

Comments
 (0)