From c6468ee24778e2ff1b30a23c67ca0bf1e1d9c03b Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Wed, 30 Sep 2020 22:11:13 +0200 Subject: [PATCH] Revert "Use glibc's getrandom() instead of syscall when glibc > 2.25." This reverts commit 9c46a60e6c3edc35d6369afdf5252a5c66aef5b3. When the library is dynamically linked against Glibc (as is usually the case with Glibc), it now requires a recent Glibc at runtime if it was compiled with a recent Glibc. This is a loss of functionality for no demonstrated benefit. Signed-off-by: Gilles Peskine --- ChangeLog.d/getrandom.txt | 2 -- library/entropy_poll.c | 20 ++------------------ 2 files changed, 2 insertions(+), 20 deletions(-) delete mode 100644 ChangeLog.d/getrandom.txt diff --git a/ChangeLog.d/getrandom.txt b/ChangeLog.d/getrandom.txt deleted file mode 100644 index 87a3a6c132..0000000000 --- a/ChangeLog.d/getrandom.txt +++ /dev/null @@ -1,2 +0,0 @@ -Changes - Use glibc's getrandom() instead of syscall when glibc > 2.25. diff --git a/library/entropy_poll.c b/library/entropy_poll.c index 0f992f34c7..4bf660e055 100644 --- a/library/entropy_poll.c +++ b/library/entropy_poll.c @@ -18,15 +18,9 @@ */ #if defined(__linux__) -#if !defined(_GNU_SOURCE) /* Ensure that syscall() is available even when compiling with -std=c99 */ #define _GNU_SOURCE #endif -#include -#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 25) -#define HAVE_SYS_RANDOM 1 -#endif -#endif #include "common.h" @@ -92,16 +86,10 @@ int mbedtls_platform_entropy_poll( void *data, unsigned char *output, size_t len /* * Test for Linux getrandom() support. - * When the C library is GNU libc and its version is greater than 2.25, - * include sys/random.h to use getrandom(), - * otherwise use the generic use the generic syscall wrapper + * Since there is no wrapper in the libc yet, use the generic syscall wrapper * available in GNU libc and compatible libc's (eg uClibc). */ -#if HAVE_SYS_RANDOM -#include -#include -#define HAVE_GETRANDOM -#elif (defined(__linux__) && defined(__GLIBC__)) || defined(__midipix__) +#if ((defined(__linux__) && defined(__GLIBC__)) || defined(__midipix__)) #include #include #if defined(SYS_getrandom) @@ -167,11 +155,7 @@ int mbedtls_platform_entropy_poll( void *data, ((void) data); #if defined(HAVE_GETRANDOM) -#if HAVE_SYS_RANDOM - ret = getrandom(output, len, 0); -#else ret = getrandom_wrapper( output, len, 0 ); -#endif if( ret >= 0 ) { *olen = ret;