diff --git a/src/basic/random-util.c b/src/basic/random-util.c index ece0e41943..d05be6fa50 100644 --- a/src/basic/random-util.c +++ b/src/basic/random-util.c @@ -68,8 +68,6 @@ static void fallback_random_bytes(void *p, size_t n) { } void random_bytes(void *p, size_t n) { - static bool have_grndinsecure = true; - assert(p || n == 0); if (n == 0) @@ -78,15 +76,9 @@ void random_bytes(void *p, size_t n) { for (;;) { ssize_t l; - l = getrandom(p, n, have_grndinsecure ? GRND_INSECURE : GRND_NONBLOCK); - if (l < 0 && errno == EINVAL && have_grndinsecure) { - /* No GRND_INSECURE; fallback to GRND_NONBLOCK. */ - have_grndinsecure = false; - continue; - } + l = getrandom(p, n, GRND_INSECURE); if (l <= 0) - break; /* Will block (with GRND_NONBLOCK), or unexpected error. Give up and fallback - to /dev/urandom. */ + break; /* Unexpected error. Give up and fallback to /dev/urandom. */ if ((size_t) l == n) return; /* Done reading, success. */