@@ -3,6 +3,7 @@ Random: Randomizer: User: Engine unsafe
33--FILE--
44<?php
55
6+ // Empty generator
67$ randomizer = (new \Random \Randomizer (
78 new class () implements \Random \Engine {
89 public function generate (): string
@@ -15,30 +16,66 @@ $randomizer = (new \Random\Randomizer(
1516try {
1617 $ randomizer ->getInt (\PHP_INT_MIN , \PHP_INT_MAX );
1718} catch (\RuntimeException $ e ) {
18- echo "catched \n" ;
19+ echo "{ $ e -> getMessage ()} \n" ;
1920}
2021
2122try {
2223 $ randomizer ->getBytes (1 );
2324} catch (\RuntimeException $ e ) {
24- echo "catched \n" ;
25+ echo "{ $ e -> getMessage ()} \n" ;
2526}
2627
2728try {
2829 $ randomizer ->shuffleArray (\range (1 , 10 ));
2930} catch (\RuntimeException $ e ) {
30- echo "catched \n" ;
31+ echo "{ $ e -> getMessage ()} \n" ;
3132}
3233
3334try {
3435 $ randomizer ->shuffleString ('foobar ' );
3536} catch (\RuntimeException $ e ) {
36- echo "catched \n" ;
37+ echo "{$ e ->getMessage ()}\n" ;
38+ }
39+
40+ // Infinite loop
41+ $ randomizer = (new \Random \Randomizer (
42+ new class () implements \Random \Engine {
43+ public function generate (): string
44+ {
45+ return "\xff\xff\xff\xff\xff\xff\xff\xff" ;
46+ }
47+ }
48+ ));
49+
50+ try {
51+ $ randomizer ->getInt (\PHP_INT_MIN , \PHP_INT_MAX );
52+ } catch (\RuntimeException $ e ) {
53+ echo "{$ e ->getMessage ()}\n" ;
54+ }
55+
56+ try {
57+ $ randomizer ->getBytes (1 );
58+ } catch (\RuntimeException $ e ) {
59+ echo "{$ e ->getMessage ()}\n" ;
60+ }
61+
62+ try {
63+ $ randomizer ->shuffleArray (\range (1 , 10 ));
64+ } catch (\RuntimeException $ e ) {
65+ echo "{$ e ->getMessage ()}\n" ;
66+ }
67+
68+ try {
69+ $ randomizer ->shuffleString ('foobar ' );
70+ } catch (\RuntimeException $ e ) {
71+ echo "{$ e ->getMessage ()}\n" ;
3772}
3873
3974?>
4075--EXPECT--
41- catched
42- catched
43- catched
44- catched
76+ Random number generate failed
77+ Random number generate failed
78+ Random number generate failed
79+ Random number generate failed
80+ Random number generate failed
81+ Random number generate failed
0 commit comments