Index: mbedtls-1.3.10/library/entropy_poll.c =================================================================== --- mbedtls-1.3.10.orig/library/entropy_poll.c +++ mbedtls-1.3.10/library/entropy_poll.c @@ -81,40 +81,35 @@ int platform_entropy_poll( void *data, u #include #if defined(SYS_getrandom) #define HAVE_GETRANDOM -static int getrandom_wrapper( void *buf, size_t buflen, unsigned int flags ) +static ssize_t getrandom_wrapper( void *buf, size_t buflen, unsigned int flags ) { return( syscall( SYS_getrandom, buf, buflen, flags ) ); } #endif /* SYS_getrandom */ #endif /* __linux__ */ -#if defined(HAVE_GETRANDOM) - +#include #include int platform_entropy_poll( void *data, unsigned char *output, size_t len, size_t *olen ) { - int ret; + FILE *file; + size_t ret; ((void) data); - if( ( ret = getrandom_wrapper( output, len, 0 ) ) < 0 ) - return( POLARSSL_ERR_ENTROPY_SOURCE_FAILED ); - - *olen = ret; - return( 0 ); -} - -#else /* HAVE_GETRANDOM */ +#if defined(HAVE_GETRANDOM) + ssize_t sysret; -#include + if( ( sysret = getrandom_wrapper( output, len, 0 ) ) >= 0 ) + { + *olen = sysret; + return( 0 ); + } + if (sysret < 0 && errno != ENOSYS) + return( POLARSSL_ERR_ENTROPY_SOURCE_FAILED ); -int platform_entropy_poll( void *data, - unsigned char *output, size_t len, size_t *olen ) -{ - FILE *file; - size_t ret; - ((void) data); +#endif /* HAVE_GETRANDOM */ *olen = 0; @@ -134,7 +129,6 @@ int platform_entropy_poll( void *data, return( 0 ); } -#endif /* HAVE_GETRANDOM */ #endif /* _WIN32 && !EFIX64 && !EFI32 */ #endif /* !POLARSSL_NO_PLATFORM_ENTROPY */