forked from pool/mbedtls
1 OBS-URL: https://build.opensuse.org/request/show/293983 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/mbedtls?expand=0&rev=2
68 lines
1.7 KiB
Diff
68 lines
1.7 KiB
Diff
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 <sys/syscall.h>
|
|
#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 <stdio.h>
|
|
#include <errno.h>
|
|
|
|
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 <stdio.h>
|
|
+ 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 */
|
|
|