@@ -10,10 +10,7 @@ use wasm_bindgen_test::wasm_bindgen_test as test;
10
10
#[ cfg( feature = "test-in-browser" ) ]
11
11
wasm_bindgen_test:: wasm_bindgen_test_configure!( run_in_browser) ;
12
12
13
- use core:: {
14
- num:: NonZeroU32 ,
15
- sync:: atomic:: { AtomicU8 , Ordering } ,
16
- } ;
13
+ use core:: num:: NonZeroU32 ;
17
14
use getrandom:: { getrandom, register_custom_getrandom, Error } ;
18
15
19
16
fn len7_err ( ) -> Error {
@@ -25,10 +22,11 @@ fn super_insecure_rng(buf: &mut [u8]) -> Result<(), Error> {
25
22
if buf. len ( ) == 7 {
26
23
return Err ( len7_err ( ) ) ;
27
24
}
28
- // Otherwise, increment an atomic counter
29
- static COUNTER : AtomicU8 = AtomicU8 :: new ( 0 ) ;
25
+ // Otherwise, fill bytes based on input length
26
+ let mut start = buf . len ( ) as u8 ;
30
27
for b in buf {
31
- * b = COUNTER . fetch_add ( 1 , Ordering :: Relaxed ) ;
28
+ * b = start;
29
+ start = start. wrapping_mul ( 3 ) ;
32
30
}
33
31
Ok ( ( ) )
34
32
}
@@ -39,9 +37,11 @@ register_custom_getrandom!(super_insecure_rng);
39
37
fn custom_rng_output ( ) {
40
38
let mut buf = [ 0u8 ; 4 ] ;
41
39
assert_eq ! ( getrandom( & mut buf) , Ok ( ( ) ) ) ;
42
- assert_eq ! ( buf, [ 0 , 1 , 2 , 3 ] ) ;
40
+ assert_eq ! ( buf, [ 4 , 12 , 36 , 108 ] ) ;
41
+
42
+ let mut buf = [ 0u8 ; 3 ] ;
43
43
assert_eq ! ( getrandom( & mut buf) , Ok ( ( ) ) ) ;
44
- assert_eq ! ( buf, [ 4 , 5 , 6 , 7 ] ) ;
44
+ assert_eq ! ( buf, [ 3 , 9 , 27 ] ) ;
45
45
}
46
46
47
47
#[ test]
0 commit comments