From: Lennart Poettering Date: Tue, 6 Nov 2018 11:08:26 +0000 (+0100) Subject: random-util: initialize srand() from RDRAND X-Git-Tag: v240~400^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=92025e8f521c55c9360ea749d139d796f62efb96;p=thirdparty%2Fsystemd.git 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. --- 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; }