diff options
Diffstat (limited to 'lib/getrandom.c')
-rw-r--r-- | lib/getrandom.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/getrandom.c b/lib/getrandom.c index 9b6ecb43be..f20ffe0112 100644 --- a/lib/getrandom.c +++ b/lib/getrandom.c @@ -21,16 +21,21 @@ #include <sys/random.h> -#include "minmax.h" #include <fcntl.h> #include <stdbool.h> #include <unistd.h> +#include "minmax.h" + /* Set BUFFER (of size LENGTH) to random bytes under the control of FLAGS. Return the number of bytes written, or -1 on error. */ ssize_t getrandom (void *buffer, size_t length, unsigned int flags) +#undef getrandom { +#if HAVE_GETRANDOM + return getrandom (buffer, length, flags); +#else static int randfd[2] = { -1, -1 }; bool devrandom = (flags & GRND_RANDOM) != 0; int fd = randfd[devrandom]; @@ -49,4 +54,5 @@ getrandom (void *buffer, size_t length, unsigned int flags) } return read (fd, buffer, length); +#endif } |