Merge pull request #10654 from poettering/srand-rdrand

random-util.c mini-fixes
This commit is contained in:
Yu Watanabe 2018-11-07 02:03:09 +09:00 committed by GitHub
commit 49a060aca8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -142,8 +142,9 @@ void initialize_srand(void) {
static bool srand_called = false;
unsigned x;
#if HAVE_SYS_AUXV_H
void *auxv;
const void *auxv;
#endif
uint64_t k;
if (srand_called)
return;
@ -153,7 +154,7 @@ void initialize_srand(void) {
* try to make use of that to seed the pseudo-random generator. It's
* better than nothing... */
auxv = (void*) getauxval(AT_RANDOM);
auxv = (const void*) getauxval(AT_RANDOM);
if (auxv) {
assert_cc(sizeof(x) <= 16);
memcpy(&x, auxv, sizeof(x));
@ -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;
}