From 92025e8f521c55c9360ea749d139d796f62efb96 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 6 Nov 2018 12:08:26 +0100 Subject: [PATCH] random-util: initialize srand() from RDRAND It's cheap to get RDRAND and given that srand() is anyway not really useful for trusted randomness let's use RDRAND for it, after all we have all the hard work for that already in place. --- src/basic/random-util.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/basic/random-util.c b/src/basic/random-util.c index 23951c01811..071a41f1863 100644 --- a/src/basic/random-util.c +++ b/src/basic/random-util.c @@ -144,6 +144,7 @@ void initialize_srand(void) { #if HAVE_SYS_AUXV_H const void *auxv; #endif + uint64_t k; if (srand_called) return; @@ -164,6 +165,9 @@ void initialize_srand(void) { x ^= (unsigned) now(CLOCK_REALTIME); x ^= (unsigned) gettid(); + if (rdrand64(&k) >= 0) + x ^= (unsigned) k; + srand(x); srand_called = true; } -- 2.47.3