diff options
author | Kim Alvefur <zash@zash.se> | 2017-03-02 23:03:02 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2017-03-02 23:03:02 +0100 |
commit | 8b9646fee679b47520503b7eaafff9539a3ea3f2 (patch) | |
tree | 4b71bdc7622635a101579c04b2d9e0c56991df2c /util-src/crand.c | |
parent | 55ba289bedc1580f49af034b8a849958b698de77 (diff) | |
parent | c0937dcdb42f9ac2fc928aa91f1474607b735590 (diff) | |
download | prosody-8b9646fee679b47520503b7eaafff9539a3ea3f2.tar.gz prosody-8b9646fee679b47520503b7eaafff9539a3ea3f2.zip |
Merge 0.10->trunk
Diffstat (limited to 'util-src/crand.c')
-rw-r--r-- | util-src/crand.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/util-src/crand.c b/util-src/crand.c index f3fa00ea..ef9da4d2 100644 --- a/util-src/crand.c +++ b/util-src/crand.c @@ -19,6 +19,8 @@ * */ +#define _DEFAULT_SOURCE + #include "lualib.h" #include "lauxlib.h" @@ -26,21 +28,22 @@ #include <errno.h> #if defined(WITH_GETRANDOM) + +#if ! __GLIBC_PREREQ(2,25) #include <unistd.h> #include <sys/syscall.h> -#include <linux/random.h> #ifndef SYS_getrandom #error getrandom() requires Linux 3.17 or later #endif -/* - * This acts like a read from /dev/urandom with the exception that it - * *does* block if the entropy pool is not yet initialized. - */ -int getrandom(void *buf, size_t len, int flags) { - return syscall(SYS_getrandom, buf, len, flags); +/* This wasn't present before glibc 2.25 */ +int getrandom(void *buf, size_t buflen, unsigned int flags) { + return syscall(SYS_getrandom, buf, buflen, flags); } +#else +#include <sys/random.h> +#endif #elif defined(WITH_ARC4RANDOM) #include <stdlib.h> @@ -56,6 +59,10 @@ int Lrandom(lua_State *L) { void *buf = lua_newuserdata(L, len); #if defined(WITH_GETRANDOM) + /* + * This acts like a read from /dev/urandom with the exception that it + * *does* block if the entropy pool is not yet initialized. + */ ret = getrandom(buf, len, 0); if(ret < 0) { |