diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2021-01-08 17:54:30 -0800 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2021-01-08 17:56:15 -0800 |
commit | b0ebaf83a49fe4a895a78ddf5b0c4a029e34c566 (patch) | |
tree | 0228a5829c4bc06f28b1995f5d9c97870f33bbd8 /lib | |
parent | 551b70f4d0a975f3fa7b91bd2a040e71797d8c9d (diff) | |
download | gnulib-b0ebaf83a49fe4a895a78ddf5b0c4a029e34c566.tar.gz |
tempname: don’t block for minutes
Derived from a patch proposed by Adhemerval Zanella in:
https://sourceware.org/pipermail/libc-alpha/2021-January/121302.html
* lib/tempname.c (random_bits): Use GRND_NONBLOCK.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/tempname.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/tempname.c b/lib/tempname.c index f196b98622..f199b25a7a 100644 --- a/lib/tempname.c +++ b/lib/tempname.c @@ -80,10 +80,11 @@ static random_value random_bits (random_value var) { random_value r; - if (__getrandom (&r, sizeof r, 0) == sizeof r) + /* Without GRND_NONBLOCK it can be blocked for minutes on some systems. */ + if (__getrandom (&r, sizeof r, GRND_NONBLOCK) == sizeof r) return r; #if _LIBC || (defined CLOCK_MONOTONIC && HAVE_CLOCK_GETTIME) - /* Add entropy if getrandom is not supported. */ + /* Add entropy if getrandom did not work. */ struct __timespec64 tv; __clock_gettime64 (CLOCK_MONOTONIC, &tv); var ^= tv.tv_nsec; |