20
20
21
21
#define DEBUG_SEED (s )
22
22
23
+ #if defined(__APPLE__ ) || defined(__unix__ ) || defined(__linux__ )
24
+ #define HAVE_DEV_RANDOM 1
25
+ #endif
26
+
27
+ #ifdef HAVE_ARC4RANDOM
28
+ #undef HAVE_GETRANDOM
29
+ #undef HAVE_DEV_RANDOM
30
+ #undef HAVE_CRYPTGENRANDOM
31
+ #endif
32
+
23
33
#if defined ENABLE_RDRAND
24
34
25
35
/* cpuid */
@@ -197,7 +207,7 @@ static int get_getrandom_seed(int *seed)
197
207
198
208
/* get_dev_random_seed */
199
209
200
- #if defined( __APPLE__ ) || defined( __unix__ ) || defined( __linux__ )
210
+ #ifdef HAVE_DEV_RANDOM
201
211
202
212
#include <fcntl.h>
203
213
#include <string.h>
@@ -207,8 +217,6 @@ static int get_getrandom_seed(int *seed)
207
217
#include <stdlib.h>
208
218
#include <sys/stat.h>
209
219
210
- #define HAVE_DEV_RANDOM 1
211
-
212
220
static const char * dev_random_file = "/dev/urandom" ;
213
221
214
222
static int get_dev_random_seed (int * seed )
@@ -294,6 +302,7 @@ static int get_cryptgenrandom_seed(int *seed)
294
302
295
303
/* get_time_seed */
296
304
305
+ #ifndef HAVE_ARC4RANDOM
297
306
#include <time.h>
298
307
299
308
static int get_time_seed (void )
@@ -302,12 +311,12 @@ static int get_time_seed(void)
302
311
303
312
return (unsigned )time (NULL ) * 433494437 ;
304
313
}
314
+ #endif
305
315
306
316
/* json_c_get_random_seed */
307
317
308
318
int json_c_get_random_seed (void )
309
319
{
310
- int seed ;
311
320
#ifdef OVERRIDE_GET_RANDOM_SEED
312
321
OVERRIDE_GET_RANDOM_SEED ;
313
322
#endif
@@ -318,18 +327,28 @@ int json_c_get_random_seed(void)
318
327
#ifdef HAVE_ARC4RANDOM
319
328
/* arc4random never fails, so use it if it's available */
320
329
return arc4random ();
321
- #endif
330
+ #else
322
331
#ifdef HAVE_GETRANDOM
323
- if (get_getrandom_seed (& seed ) == 0 )
324
- return seed ;
332
+ {
333
+ int seed ;
334
+ if (get_getrandom_seed (& seed ) == 0 )
335
+ return seed ;
336
+ }
325
337
#endif
326
338
#if defined HAVE_DEV_RANDOM && HAVE_DEV_RANDOM
327
- if (get_dev_random_seed (& seed ) == 0 )
328
- return seed ;
339
+ {
340
+ int seed ;
341
+ if (get_dev_random_seed (& seed ) == 0 )
342
+ return seed ;
343
+ }
329
344
#endif
330
345
#if defined HAVE_CRYPTGENRANDOM && HAVE_CRYPTGENRANDOM
331
- if (get_cryptgenrandom_seed (& seed ) == 0 )
332
- return seed ;
346
+ {
347
+ int seed ;
348
+ if (get_cryptgenrandom_seed (& seed ) == 0 )
349
+ return seed ;
350
+ }
333
351
#endif
334
352
return get_time_seed ();
353
+ #endif /* !HAVE_ARC4RANDOM */
335
354
}
0 commit comments