Skip to content

Commit fe3a819

Browse files
committed
Fixed GH-12564: The negative fiber.stack_size setting leads to crash
1 parent 19dfe05 commit fe3a819

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
@@ -177,7 +177,12 @@ static ZEND_INI_MH(OnSetExceptionStringParamMaxLen) /* {{{ */
177177
static ZEND_INI_MH(OnUpdateFiberStackSize) /* {{{ */
178178
{
179179
if (new_value) {
180-
EG(fiber_stack_size) = zend_atol(ZSTR_VAL(new_value), ZSTR_LEN(new_value));
180+
zend_long tmp = zend_atol(ZSTR_VAL(new_value), ZSTR_LEN(new_value));
181+
if (tmp < 0) {
182+
zend_error(E_WARNING, "fiber.stack_size must be a positive number");
183+
return FAILURE;
184+
}
185+
EG(fiber_stack_size) = tmp;
181186
} else {
182187
EG(fiber_stack_size) = ZEND_FIBER_DEFAULT_C_STACK_SIZE;
183188
}

0 commit comments

Comments
 (0)