mirror of
https://github.com/jedisct1/libsodium.git
synced 2026-08-25 08:37:13 +09:00
Revert "Add getrandom(2) support for FreeBSD 12"
This reverts commit 52fdd7ab39.
Due to TinyC crashing.
This commit is contained in:
@@ -19,20 +19,9 @@
|
||||
#ifdef __linux__
|
||||
# ifdef __dietlibc__
|
||||
# define _LINUX_SOURCE
|
||||
# include <sys/random.h>
|
||||
# define HAVE_LINUX_COMPATIBLE_GETRANDOM
|
||||
# else
|
||||
# include <sys/syscall.h>
|
||||
# if defined(SYS_getrandom) && defined(__NR_getrandom)
|
||||
# define getrandom(B, S, F) syscall(SYS_getrandom, (B), (int) (S), (F))
|
||||
# define HAVE_LINUX_COMPATIBLE_GETRANDOM
|
||||
# endif
|
||||
# endif
|
||||
#elif defined(__FreeBSD_version) && __FreeBSD_version >= 1200000
|
||||
# include <sys/random.h>
|
||||
# define HAVE_LINUX_COMPATIBLE_GETRANDOM
|
||||
#endif
|
||||
#ifdef HAVE_LINUX_COMPATIBLE_GETRANDOM
|
||||
# include <poll.h>
|
||||
#endif
|
||||
#ifdef HAVE_RDRAND
|
||||
@@ -257,7 +246,7 @@ randombytes_salsa20_random_random_dev_open(void)
|
||||
}
|
||||
# endif
|
||||
|
||||
# ifdef HAVE_LINUX_COMPATIBLE_GETRANDOM
|
||||
# if defined(__dietlibc__) || (defined(SYS_getrandom) && defined(__NR_getrandom))
|
||||
static int
|
||||
_randombytes_linux_getrandom(void * const buf, const size_t size)
|
||||
{
|
||||
@@ -265,7 +254,11 @@ _randombytes_linux_getrandom(void * const buf, const size_t size)
|
||||
|
||||
assert(size <= 256U);
|
||||
do {
|
||||
# ifdef __dietlibc__
|
||||
readnb = getrandom(buf, size, 0);
|
||||
# else
|
||||
readnb = syscall(SYS_getrandom, buf, (int) size, 0);
|
||||
# endif
|
||||
} while (readnb < 0 && (errno == EINTR || errno == EAGAIN));
|
||||
|
||||
return (readnb == (int) size) - 1;
|
||||
@@ -306,7 +299,7 @@ randombytes_salsa20_random_init(void)
|
||||
errno = errno_save;
|
||||
# else
|
||||
|
||||
# ifdef HAVE_LINUX_COMPATIBLE_GETRANDOM
|
||||
# if defined(SYS_getrandom) && defined(__NR_getrandom)
|
||||
{
|
||||
unsigned char fodder[16];
|
||||
|
||||
@@ -317,7 +310,7 @@ randombytes_salsa20_random_init(void)
|
||||
}
|
||||
global.getrandom_available = 0;
|
||||
}
|
||||
# endif /* HAVE_LINUX_COMPATIBLE_GETRANDOM */
|
||||
# endif /* SYS_getrandom */
|
||||
|
||||
if ((global.random_data_source_fd =
|
||||
randombytes_salsa20_random_random_dev_open()) == -1) {
|
||||
@@ -350,7 +343,7 @@ randombytes_salsa20_random_stir(void)
|
||||
|
||||
# ifdef HAVE_SAFE_ARC4RANDOM
|
||||
arc4random_buf(stream.key, sizeof stream.key);
|
||||
# elif defined(HAVE_LINUX_COMPATIBLE_GETRANDOM)
|
||||
# elif defined(SYS_getrandom) && defined(__NR_getrandom)
|
||||
if (global.getrandom_available != 0) {
|
||||
if (randombytes_linux_getrandom(stream.key, sizeof stream.key) != 0) {
|
||||
sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||
@@ -435,7 +428,7 @@ randombytes_salsa20_random_close(void)
|
||||
ret = 0;
|
||||
# endif
|
||||
|
||||
# ifdef HAVE_LINUX_COMPATIBLE_GETRANDOM
|
||||
# if defined(SYS_getrandom) && defined(__NR_getrandom)
|
||||
if (global.getrandom_available != 0) {
|
||||
ret = 0;
|
||||
}
|
||||
|
||||
@@ -18,20 +18,9 @@
|
||||
#ifdef __linux__
|
||||
# ifdef __dietlibc__
|
||||
# define _LINUX_SOURCE
|
||||
# include <sys/random.h>
|
||||
# define HAVE_LINUX_COMPATIBLE_GETRANDOM
|
||||
# else
|
||||
# include <sys/syscall.h>
|
||||
# if defined(SYS_getrandom) && defined(__NR_getrandom)
|
||||
# define getrandom(B, S, F) syscall(SYS_getrandom, (B), (int) (S), (F))
|
||||
# define HAVE_LINUX_COMPATIBLE_GETRANDOM
|
||||
# endif
|
||||
# endif
|
||||
#elif defined(__FreeBSD_version) && __FreeBSD_version >= 1200000
|
||||
# include <sys/random.h>
|
||||
# define HAVE_LINUX_COMPATIBLE_GETRANDOM
|
||||
#endif
|
||||
#ifdef HAVE_LINUX_COMPATIBLE_GETRANDOM
|
||||
# include <poll.h>
|
||||
#endif
|
||||
|
||||
@@ -215,7 +204,7 @@ randombytes_sysrandom_random_dev_open(void)
|
||||
/* LCOV_EXCL_STOP */
|
||||
}
|
||||
|
||||
# ifdef HAVE_LINUX_COMPATIBLE_GETRANDOM
|
||||
# if defined(__dietlibc__) || (defined(SYS_getrandom) && defined(__NR_getrandom))
|
||||
static int
|
||||
_randombytes_linux_getrandom(void * const buf, const size_t size)
|
||||
{
|
||||
@@ -223,7 +212,11 @@ _randombytes_linux_getrandom(void * const buf, const size_t size)
|
||||
|
||||
assert(size <= 256U);
|
||||
do {
|
||||
# ifdef __dietlibc__
|
||||
readnb = getrandom(buf, size, 0);
|
||||
# else
|
||||
readnb = syscall(SYS_getrandom, buf, (int) size, 0);
|
||||
# endif
|
||||
} while (readnb < 0 && (errno == EINTR || errno == EAGAIN));
|
||||
|
||||
return (readnb == (int) size) - 1;
|
||||
@@ -256,7 +249,7 @@ randombytes_sysrandom_init(void)
|
||||
{
|
||||
const int errno_save = errno;
|
||||
|
||||
# ifdef HAVE_LINUX_COMPATIBLE_GETRANDOM
|
||||
# if defined(SYS_getrandom) && defined(__NR_getrandom)
|
||||
{
|
||||
unsigned char fodder[16];
|
||||
|
||||
@@ -313,7 +306,7 @@ randombytes_sysrandom_close(void)
|
||||
stream.initialized = 0;
|
||||
ret = 0;
|
||||
}
|
||||
# ifdef HAVE_LINUX_COMPATIBLE_GETRANDOM
|
||||
# if defined(SYS_getrandom) && defined(__NR_getrandom)
|
||||
if (stream.getrandom_available != 0) {
|
||||
ret = 0;
|
||||
}
|
||||
@@ -338,7 +331,7 @@ randombytes_sysrandom_buf(void * const buf, const size_t size)
|
||||
# endif
|
||||
#endif
|
||||
#ifndef _WIN32
|
||||
# ifdef HAVE_LINUX_COMPATIBLE_GETRANDOM
|
||||
# if defined(SYS_getrandom) && defined(__NR_getrandom)
|
||||
if (stream.getrandom_available != 0) {
|
||||
if (randombytes_linux_getrandom(buf, size) != 0) {
|
||||
sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||
|
||||
Reference in New Issue
Block a user