Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit97c6da1

Browse files
authored
random/standard: Correctly handle broken engines in php_array_pick_keys (#13138)
1 parentdf85c25 commit97c6da1

File tree

5 files changed

+383
-1
lines changed

5 files changed

+383
-1
lines changed

‎NEWS‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ PHP NEWS
1313
- Phar:
1414
. Fixed bug #71465 (PHAR doesn't know about litespeed). (nielsdos)
1515

16+
- Random:
17+
. Fixed bug GH-13138 (Randomizer::pickArrayKeys() does not detect broken
18+
engines). (timwolla)
19+
1620
18 Jan 2024, PHP 8.2.15
1721

1822
- Core:

‎ext/random/tests/03_randomizer/engine_unsafe_biased.phpt‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,18 @@ try {
4343
echo$e->getMessage(),PHP_EOL;
4444
}
4545

46+
try {
47+
var_dump(randomizer()->pickArrayKeys(range(1,1234),1));
48+
}catch (Random\BrokenRandomEngineError$e) {
49+
echo$e->getMessage(),PHP_EOL;
50+
}
51+
52+
try {
53+
var_dump(randomizer()->pickArrayKeys(range(1,1234),10));
54+
}catch (Random\BrokenRandomEngineError$e) {
55+
echo$e->getMessage(),PHP_EOL;
56+
}
57+
4658
try {
4759
var_dump(randomizer()->shuffleBytes('foobar'));
4860
}catch (Random\BrokenRandomEngineError$e) {
@@ -56,3 +68,5 @@ int(%d)
5668
string(2) "ff"
5769
Failed to generate an acceptable random number in 50 attempts
5870
Failed to generate an acceptable random number in 50 attempts
71+
Failed to generate an acceptable random number in 50 attempts
72+
Failed to generate an acceptable random number in 50 attempts

‎ext/random/tests/03_randomizer/engine_unsafe_empty_string.phpt‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,18 @@ try {
4343
echo$e->getMessage(),PHP_EOL;
4444
}
4545

46+
try {
47+
var_dump(randomizer()->pickArrayKeys(range(1,1234),1));
48+
}catch (Random\BrokenRandomEngineError$e) {
49+
echo$e->getMessage(),PHP_EOL;
50+
}
51+
52+
try {
53+
var_dump(randomizer()->pickArrayKeys(range(1,1234),10));
54+
}catch (Random\BrokenRandomEngineError$e) {
55+
echo$e->getMessage(),PHP_EOL;
56+
}
57+
4658
try {
4759
var_dump(randomizer()->shuffleBytes('foobar'));
4860
}catch (Random\BrokenRandomEngineError$e) {
@@ -56,3 +68,5 @@ A random engine must return a non-empty string
5668
A random engine must return a non-empty string
5769
A random engine must return a non-empty string
5870
A random engine must return a non-empty string
71+
A random engine must return a non-empty string
72+
A random engine must return a non-empty string
Lines changed: 322 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,322 @@
1+
--TEST--
2+
Random: Randomizer: Nul engines are correctly handled
3+
--FILE--
4+
<?php
5+
6+
useRandom\Engine;
7+
useRandom\Randomizer;
8+
9+
finalclass NulEngineimplements Engine
10+
{
11+
publicfunctiongenerate():string
12+
{
13+
returnstr_repeat("\x00",PHP_INT_SIZE);
14+
}
15+
}
16+
17+
functionrandomizer():Randomizer
18+
{
19+
returnnewRandomizer(newNulEngine());
20+
}
21+
22+
try {
23+
var_dump(randomizer()->getInt(0,1234));
24+
}catch (Random\BrokenRandomEngineError$e) {
25+
echo$e->getMessage(),PHP_EOL;
26+
}
27+
28+
try {
29+
var_dump(randomizer()->nextInt());
30+
}catch (Random\BrokenRandomEngineError$e) {
31+
echo$e->getMessage(),PHP_EOL;
32+
}
33+
34+
try {
35+
var_dump(bin2hex(randomizer()->getBytes(1)));
36+
}catch (Random\BrokenRandomEngineError$e) {
37+
echo$e->getMessage(),PHP_EOL;
38+
}
39+
40+
try {
41+
var_dump(randomizer()->shuffleArray(range(1,123)));
42+
}catch (Random\BrokenRandomEngineError$e) {
43+
echo$e->getMessage(),PHP_EOL;
44+
}
45+
46+
try {
47+
var_dump(randomizer()->pickArrayKeys(range(1,123),1));
48+
}catch (Random\BrokenRandomEngineError$e) {
49+
echo$e->getMessage(),PHP_EOL;
50+
}
51+
52+
try {
53+
var_dump(randomizer()->pickArrayKeys(range(1,123),10));
54+
}catch (Random\BrokenRandomEngineError$e) {
55+
echo$e->getMessage(),PHP_EOL;
56+
}
57+
58+
try {
59+
var_dump(randomizer()->shuffleBytes('foobar'));
60+
}catch (Random\BrokenRandomEngineError$e) {
61+
echo$e->getMessage(),PHP_EOL;
62+
}
63+
64+
?>
65+
--EXPECTF--
66+
int(0)
67+
int(0)
68+
string(2) "00"
69+
array(123) {
70+
[0]=>
71+
int(2)
72+
[1]=>
73+
int(3)
74+
[2]=>
75+
int(4)
76+
[3]=>
77+
int(5)
78+
[4]=>
79+
int(6)
80+
[5]=>
81+
int(7)
82+
[6]=>
83+
int(8)
84+
[7]=>
85+
int(9)
86+
[8]=>
87+
int(10)
88+
[9]=>
89+
int(11)
90+
[10]=>
91+
int(12)
92+
[11]=>
93+
int(13)
94+
[12]=>
95+
int(14)
96+
[13]=>
97+
int(15)
98+
[14]=>
99+
int(16)
100+
[15]=>
101+
int(17)
102+
[16]=>
103+
int(18)
104+
[17]=>
105+
int(19)
106+
[18]=>
107+
int(20)
108+
[19]=>
109+
int(21)
110+
[20]=>
111+
int(22)
112+
[21]=>
113+
int(23)
114+
[22]=>
115+
int(24)
116+
[23]=>
117+
int(25)
118+
[24]=>
119+
int(26)
120+
[25]=>
121+
int(27)
122+
[26]=>
123+
int(28)
124+
[27]=>
125+
int(29)
126+
[28]=>
127+
int(30)
128+
[29]=>
129+
int(31)
130+
[30]=>
131+
int(32)
132+
[31]=>
133+
int(33)
134+
[32]=>
135+
int(34)
136+
[33]=>
137+
int(35)
138+
[34]=>
139+
int(36)
140+
[35]=>
141+
int(37)
142+
[36]=>
143+
int(38)
144+
[37]=>
145+
int(39)
146+
[38]=>
147+
int(40)
148+
[39]=>
149+
int(41)
150+
[40]=>
151+
int(42)
152+
[41]=>
153+
int(43)
154+
[42]=>
155+
int(44)
156+
[43]=>
157+
int(45)
158+
[44]=>
159+
int(46)
160+
[45]=>
161+
int(47)
162+
[46]=>
163+
int(48)
164+
[47]=>
165+
int(49)
166+
[48]=>
167+
int(50)
168+
[49]=>
169+
int(51)
170+
[50]=>
171+
int(52)
172+
[51]=>
173+
int(53)
174+
[52]=>
175+
int(54)
176+
[53]=>
177+
int(55)
178+
[54]=>
179+
int(56)
180+
[55]=>
181+
int(57)
182+
[56]=>
183+
int(58)
184+
[57]=>
185+
int(59)
186+
[58]=>
187+
int(60)
188+
[59]=>
189+
int(61)
190+
[60]=>
191+
int(62)
192+
[61]=>
193+
int(63)
194+
[62]=>
195+
int(64)
196+
[63]=>
197+
int(65)
198+
[64]=>
199+
int(66)
200+
[65]=>
201+
int(67)
202+
[66]=>
203+
int(68)
204+
[67]=>
205+
int(69)
206+
[68]=>
207+
int(70)
208+
[69]=>
209+
int(71)
210+
[70]=>
211+
int(72)
212+
[71]=>
213+
int(73)
214+
[72]=>
215+
int(74)
216+
[73]=>
217+
int(75)
218+
[74]=>
219+
int(76)
220+
[75]=>
221+
int(77)
222+
[76]=>
223+
int(78)
224+
[77]=>
225+
int(79)
226+
[78]=>
227+
int(80)
228+
[79]=>
229+
int(81)
230+
[80]=>
231+
int(82)
232+
[81]=>
233+
int(83)
234+
[82]=>
235+
int(84)
236+
[83]=>
237+
int(85)
238+
[84]=>
239+
int(86)
240+
[85]=>
241+
int(87)
242+
[86]=>
243+
int(88)
244+
[87]=>
245+
int(89)
246+
[88]=>
247+
int(90)
248+
[89]=>
249+
int(91)
250+
[90]=>
251+
int(92)
252+
[91]=>
253+
int(93)
254+
[92]=>
255+
int(94)
256+
[93]=>
257+
int(95)
258+
[94]=>
259+
int(96)
260+
[95]=>
261+
int(97)
262+
[96]=>
263+
int(98)
264+
[97]=>
265+
int(99)
266+
[98]=>
267+
int(100)
268+
[99]=>
269+
int(101)
270+
[100]=>
271+
int(102)
272+
[101]=>
273+
int(103)
274+
[102]=>
275+
int(104)
276+
[103]=>
277+
int(105)
278+
[104]=>
279+
int(106)
280+
[105]=>
281+
int(107)
282+
[106]=>
283+
int(108)
284+
[107]=>
285+
int(109)
286+
[108]=>
287+
int(110)
288+
[109]=>
289+
int(111)
290+
[110]=>
291+
int(112)
292+
[111]=>
293+
int(113)
294+
[112]=>
295+
int(114)
296+
[113]=>
297+
int(115)
298+
[114]=>
299+
int(116)
300+
[115]=>
301+
int(117)
302+
[116]=>
303+
int(118)
304+
[117]=>
305+
int(119)
306+
[118]=>
307+
int(120)
308+
[119]=>
309+
int(121)
310+
[120]=>
311+
int(122)
312+
[121]=>
313+
int(123)
314+
[122]=>
315+
int(1)
316+
}
317+
array(1) {
318+
[0]=>
319+
int(0)
320+
}
321+
Failed to generate an acceptable random number in 50 attempts
322+
string(6) "oobarf"

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp