@@ -130,8 +130,15 @@ isaac_init(sched_or_kernel *sched, randctx *rctx)
130
130
{
131
131
memset (rctx, 0 , sizeof (randctx));
132
132
133
+ char *rust_seed = sched->env ->rust_seed ;
134
+ if (rust_seed != NULL ) {
135
+ ub4 seed = (ub4) atoi (rust_seed);
136
+ for (size_t i = 0 ; i < RANDSIZ; i ++) {
137
+ memcpy (&rctx->randrsl [i], &seed, sizeof (ub4));
138
+ seed = (seed + 0x7ed55d16 ) + (seed << 12 );
139
+ }
140
+ } else {
133
141
#ifdef __WIN32__
134
- {
135
142
HCRYPTPROV hProv;
136
143
sched->win32_require
137
144
(_T (" CryptAcquireContext" ),
@@ -144,24 +151,16 @@ isaac_init(sched_or_kernel *sched, randctx *rctx)
144
151
sched->win32_require
145
152
(_T (" CryptReleaseContext" ),
146
153
CryptReleaseContext (hProv, 0 ));
147
- }
148
154
#else
149
- char *rust_seed = sched->env ->rust_seed ;
150
- if (rust_seed != NULL ) {
151
- ub4 seed = (ub4) atoi (rust_seed);
152
- for (size_t i = 0 ; i < RANDSIZ; i ++) {
153
- memcpy (&rctx->randrsl [i], &seed, sizeof (ub4));
154
- seed = (seed + 0x7ed55d16 ) + (seed << 12 );
155
- }
156
- } else {
157
155
int fd = open (" /dev/urandom" , O_RDONLY);
158
156
I (sched, fd > 0 );
159
157
I (sched,
160
158
read (fd, (void *) &rctx->randrsl , sizeof (rctx->randrsl ))
161
159
== sizeof (rctx->randrsl ));
162
160
I (sched, close (fd) == 0 );
163
- }
164
161
#endif
162
+ }
163
+
165
164
randinit (rctx, 1 );
166
165
}
167
166
0 commit comments