From 015dfe9978338b27e904ac4cf09b9df0f90c0858 Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Tue, 26 Mar 2019 15:06:36 +0100 Subject: [PATCH] getentropy() only returns 0 or -1 and is atomic --- .../internal/randombytes_internal_random.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/libsodium/randombytes/internal/randombytes_internal_random.c b/src/libsodium/randombytes/internal/randombytes_internal_random.c index 4336cf10..02e845da 100644 --- a/src/libsodium/randombytes/internal/randombytes_internal_random.c +++ b/src/libsodium/randombytes/internal/randombytes_internal_random.c @@ -178,14 +178,11 @@ randombytes_internal_random_init(void) static int _randombytes_getentropy(void * const buf, const size_t size) { - int readnb; - assert(size <= 256U); - do { - readnb = getentropy(buf, size); - } while (readnb < 0 && (errno == EINTR || errno == EAGAIN)); - - return (readnb == (int) size) - 1; + if (getentropy(buf, size) != 0) { + return -1; + } + return 0; } static int