diff options
author | Lennart Poettering <lennart@poettering.net> | 2018-11-07 18:37:13 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2018-11-08 09:44:27 +0100 |
commit | d68ccc08416ce0117c59a7ddac97d443f8239d12 (patch) | |
tree | 9730e82b6313bde9e33ba8edd321eb9da5f590b4 /src/basic/random-util.c | |
parent | 3335dc2d7591fa4e5ae28efa9a2ab35fd5ba1951 (diff) | |
download | systemd-d68ccc08416ce0117c59a7ddac97d443f8239d12.tar.gz |
random-util: handle if getrandom() returns 0
This should normally not happen, but given that the man page suggests
something about this in the context of interruption, let's handle this
and propagate an I/O error.
Diffstat (limited to 'src/basic/random-util.c')
-rw-r--r-- | src/basic/random-util.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/basic/random-util.c b/src/basic/random-util.c index 5e4ed2da9d..3989bb9dc6 100644 --- a/src/basic/random-util.c +++ b/src/basic/random-util.c @@ -93,6 +93,9 @@ int genuine_random_bytes(void *p, size_t n, bool high_quality_required) { } already_done = r; + } else if (r == 0) { + have_syscall = true; + return -EIO; } else if (errno == ENOSYS) /* We lack the syscall, continue with reading from /dev/urandom. */ have_syscall = false; |