summaryrefslogtreecommitdiff
path: root/src/basic/random-util.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2018-11-07 18:37:13 +0100
committerLennart Poettering <lennart@poettering.net>2018-11-08 09:44:27 +0100
commitd68ccc08416ce0117c59a7ddac97d443f8239d12 (patch)
tree9730e82b6313bde9e33ba8edd321eb9da5f590b4 /src/basic/random-util.c
parent3335dc2d7591fa4e5ae28efa9a2ab35fd5ba1951 (diff)
downloadsystemd-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.c3
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;