diff options
Diffstat (limited to 'source/kit/secure_random.c')
-rw-r--r-- | source/kit/secure_random.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/source/kit/secure_random.c b/source/kit/secure_random.c index 20b3bf8..d51b4ec 100644 --- a/source/kit/secure_random.c +++ b/source/kit/secure_random.c @@ -49,17 +49,18 @@ static void secure_random_fallback(ptrdiff_t size, void *data) { * seed the pseudo random number generator. */ + static int8_t first_run = 1; static uint64_t n = 0; static uint64_t time_sec = 0; static uint64_t time_nsec = 0; struct timespec t; - ptrdiff_t i; timespec_get(&t, TIME_UTC); kit_mt64_state_t state; - if (time_sec == 0 && time_nsec == 0) { + if (first_run) { + first_run = 0; uint64_t seed[] = { n, get_available_memory(), (uint64_t) t.tv_sec, (uint64_t) t.tv_nsec }; kit_mt64_init_array(&state, sizeof seed / sizeof *seed, seed); @@ -79,7 +80,7 @@ static void secure_random_fallback(ptrdiff_t size, void *data) { time_sec = (uint64_t) t.tv_sec; time_nsec = (uint64_t) t.tv_nsec; - for (i = 0; i < size; i++) + for (ptrdiff_t i = 0; i < size; i++) ((uint8_t *) data)[i] = (uint8_t) (kit_mt64_generate(&state) >> 56); |