summaryrefslogtreecommitdiff
path: root/source/kit/secure_random.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/kit/secure_random.c')
-rw-r--r--source/kit/secure_random.c7
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);