Skip to content

Commit 279227c

Browse files
committed
mt19937: strict mode check in constructor
1 parent d110a63 commit 279227c

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

ext/random/engine_mt19937.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,11 +266,15 @@ PHP_METHOD(Random_Engine_Mt19937, __construct)
266266
ZEND_PARSE_PARAMETERS_END();
267267

268268
switch (mode) {
269+
case MT_RAND_MT19937:
270+
state->mode = MT_RAND_MT19937;
271+
break;
269272
case MT_RAND_PHP:
270273
state->mode = MT_RAND_PHP;
271274
break;
272275
default:
273-
state->mode = MT_RAND_MT19937;
276+
zend_argument_error(spl_ce_InvalidArgumentException, 2, "mode must be MT_RAND_MT19937 or MT_RAND_PHP");
277+
RETURN_THROWS();
274278
}
275279

276280
if (seed_is_null) {
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
--TEST--
2+
Random: Engine: Mt19937: error pattern
3+
--FILE--
4+
<?php
5+
6+
try {
7+
new \Random\Engine\Mt19937(1234, 2);
8+
} catch (\InvalidArgumentException $e) {
9+
echo $e->getMessage() . PHP_EOL;
10+
}
11+
12+
?>
13+
--EXPECT--
14+
Random\Engine\Mt19937::__construct(): Argument #2 ($mode) mode must be MT_RAND_MT19937 or MT_RAND_PHP

0 commit comments

Comments
 (0)