File tree 1 file changed +22
-18
lines changed
1 file changed +22
-18
lines changed Original file line number Diff line number Diff line change 42
42
#define RANDOM_BYTES (32*1024)
43
43
#endif
44
44
45
+ #ifdef RANDOMSEED
46
+ static void fallback (FILE * fp )
47
+ {
48
+ struct timeval tv ;
49
+ int iter = 128 ;
50
+
51
+ gettimeofday (& tv , NULL );
52
+ srandom (tv .tv_sec % 3600 );
53
+ while (iter -- ) {
54
+ uint32_t i , prng = random ();
55
+
56
+ for (i = 0 ; i < sizeof (prng ); i ++ )
57
+ fputc ((prng >> (i * CHAR_BIT )) & UCHAR_MAX , fp );
58
+ }
59
+ }
60
+ #endif
61
+
45
62
static void setup (void * arg )
46
63
{
47
64
#ifdef RANDOMSEED
@@ -74,26 +91,13 @@ static void setup(void *arg)
74
91
size_t len ;
75
92
76
93
len = fread (buf , sizeof (buf [0 ]), sizeof (buf ), hw );
77
- if (len == 0 ) {
78
- fclose (hw );
79
- goto no_hwrng ;
80
- }
81
-
82
- len = fwrite (buf , sizeof (buf [0 ]), len , fp );
94
+ if (len == 0 )
95
+ fallback (fp );
96
+ else
97
+ len = fwrite (buf , sizeof (buf [0 ]), len , fp );
83
98
fclose (hw );
84
99
} else {
85
- no_hwrng :
86
- struct timeval tv ;
87
- int iter = 128 ;
88
-
89
- gettimeofday (& tv , NULL );
90
- srandom (tv .tv_sec % 3600 );
91
- while (iter -- ) {
92
- uint32_t i , prng = random ();
93
-
94
- for (i = 0 ; i < sizeof (prng ); i ++ )
95
- fputc ((prng >> (i * CHAR_BIT )) & UCHAR_MAX , fp );
96
- }
100
+ fallback (fp );
97
101
}
98
102
ret = fclose (fp );
99
103
}
You can’t perform that action at this time.
0 commit comments