random: use getrandom() on Linux where available
authorDaniel Kahn Gillmor <dkg@fifthhorseman.net>
Wed, 5 Sep 2018 14:34:04 +0000 (10:34 -0400)
committerWerner Koch <wk@gnupg.org>
Fri, 26 Oct 2018 11:37:11 +0000 (13:37 +0200)
commit7e662680c170968661ee0105d132813f8281d229
tree112d13f35f11349846c845297d4dca5f41bbad65
parent319f55e6e5793c59f1ba4cfe481b562bca42194d
random: use getrandom() on Linux where available

* random/rndlinux.c (_gcry_rndlinux_gather_random): use the
getrandom() syscall on Linux if it exists, regardless of what kind of
entropy was requested.

--

This change avoids the serious usability problem of unnecessary
blocking on /dev/random when the kernel's PRNG is already seeded,
without introducing the risk of pulling from an uninitialized PRNG.
It only has an effect on Linux systems with a functioning getrandom()
syscall.  If that syscall is unavailable or fails, it should fall
through to the pre-existing behavior.

GnuPG-bug-id: 3894
Signed-off-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
random/rndlinux.c