diff --git a/src/libsodium/randombytes/salsa20/randombytes_salsa20_random.c b/src/libsodium/randombytes/salsa20/randombytes_salsa20_random.c index 0df99007..f8c05ad5 100644 --- a/src/libsodium/randombytes/salsa20/randombytes_salsa20_random.c +++ b/src/libsodium/randombytes/salsa20/randombytes_salsa20_random.c @@ -128,6 +128,8 @@ randombytes_salsa20_random_random_dev_open(void) static void randombytes_salsa20_random_init(void) { + const int errno_save = errno; + stream.nonce = sodium_hrtime(); assert(stream.nonce != (uint64_t) 0U); @@ -135,6 +137,7 @@ randombytes_salsa20_random_init(void) randombytes_salsa20_random_random_dev_open()) == -1) { abort(); } + errno = errno_save; } #else /* _WIN32 */ diff --git a/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c b/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c index 40334cf0..3427de74 100644 --- a/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c +++ b/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c @@ -88,10 +88,13 @@ randombytes_sysrandom_random_dev_open(void) static void randombytes_sysrandom_init(void) { + const int errno_save = errno; + if ((stream.random_data_source_fd = randombytes_sysrandom_random_dev_open()) == -1) { abort(); } + errno = errno_save; } #else /* _WIN32 */