diff options
Diffstat (limited to 'lib/nettle/sysrng-linux.c')
-rw-r--r-- | lib/nettle/sysrng-linux.c | 53 |
1 files changed, 27 insertions, 26 deletions
diff --git a/lib/nettle/sysrng-linux.c b/lib/nettle/sysrng-linux.c index e24709affe..241dd0a26e 100644 --- a/lib/nettle/sysrng-linux.c +++ b/lib/nettle/sysrng-linux.c @@ -26,11 +26,11 @@ */ #ifndef RND_NO_INCLUDES -# include "gnutls_int.h" -# include "errors.h" -# include <num.h> -# include <errno.h> -# include <rnd-common.h> +#include "gnutls_int.h" +#include "errors.h" +#include <num.h> +#include <errno.h> +#include <rnd-common.h> #endif #include <sys/types.h> @@ -49,29 +49,30 @@ get_entropy_func _rnd_get_system_entropy = NULL; #if defined(__linux__) -# ifdef HAVE_GETRANDOM -# include <sys/random.h> -# else -# include <sys/syscall.h> -# undef getrandom -# if defined(SYS_getrandom) -# define getrandom(dst,s,flags) syscall(SYS_getrandom, (void*)dst, (size_t)s, (unsigned int)flags) -# else +#ifdef HAVE_GETRANDOM +#include <sys/random.h> +#else +#include <sys/syscall.h> +#undef getrandom +#if defined(SYS_getrandom) +#define getrandom(dst, s, flags) \ + syscall(SYS_getrandom, (void *)dst, (size_t)s, (unsigned int)flags) +#else static ssize_t _getrandom0(void *buf, size_t buflen, unsigned int flags) { errno = ENOSYS; return -1; } -# define getrandom(dst,s,flags) _getrandom0(dst,s,flags) -# endif -# endif +#define getrandom(dst, s, flags) _getrandom0(dst, s, flags) +#endif +#endif static unsigned have_getrandom(void) { char c; int ret; - ret = getrandom(&c, 1, 1 /*GRND_NONBLOCK */ ); + ret = getrandom(&c, 1, 1 /*GRND_NONBLOCK */); if (ret == 1 || (ret == -1 && errno == EAGAIN)) return 1; return 0; @@ -113,8 +114,8 @@ static int _rnd_get_system_entropy_getrandom(void *_rnd, size_t size) return 0; } -#else /* not linux */ -# define have_getrandom() 0 +#else /* not linux */ +#define have_getrandom() 0 #endif static int _rnd_get_system_entropy_urandom(void *_rnd, size_t size) @@ -138,12 +139,12 @@ static int _rnd_get_system_entropy_urandom(void *_rnd, size_t size) if (res <= 0) { int e = errno; if (res < 0) { - _gnutls_debug_log - ("Failed to read /dev/urandom: %s\n", - strerror(e)); + _gnutls_debug_log( + "Failed to read /dev/urandom: %s\n", + strerror(e)); } else { - _gnutls_debug_log - ("Failed to read /dev/urandom: end of file\n"); + _gnutls_debug_log( + "Failed to read /dev/urandom: end of file\n"); } close(urandom_fd); @@ -177,8 +178,8 @@ int _rnd_system_entropy_init(void) /* Check that we can open it */ urandom_fd = open("/dev/urandom", O_RDONLY); if (urandom_fd < 0) { - _gnutls_debug_log - ("Cannot open /dev/urandom during initialization!\n"); + _gnutls_debug_log( + "Cannot open /dev/urandom during initialization!\n"); return gnutls_assert_val(GNUTLS_E_RANDOM_DEVICE_ERROR); } close(urandom_fd); |