From: Pauli Date: Fri, 29 Mar 2019 07:46:11 +0000 (+1000) Subject: Clear seed source structures. X-Git-Tag: openssl-3.0.0-alpha1~2284 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=678d2681b22c3968d1ff55ec09b9fece39641d57;p=thirdparty%2Fopenssl.git Clear seed source structures. If the structures have empty padding bytes, ensure they are zeroed. These structures are added to seed pools as complete blocks including any padding and alignment bytes. Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8610) --- diff --git a/crypto/rand/rand_unix.c b/crypto/rand/rand_unix.c index 39c4e7e7417..5d1e0d8b171 100644 --- a/crypto/rand/rand_unix.c +++ b/crypto/rand/rand_unix.c @@ -615,7 +615,10 @@ int rand_pool_add_nonce_data(RAND_POOL *pool) pid_t pid; CRYPTO_THREAD_ID tid; uint64_t time; - } data = { 0 }; + } data; + + /* Erase the entire structure including any padding */ + memset(&data, 0, sizeof(data)); /* * Add process id, thread id, and a high resolution timestamp to @@ -634,7 +637,10 @@ int rand_pool_add_additional_data(RAND_POOL *pool) struct { CRYPTO_THREAD_ID tid; uint64_t time; - } data = { 0 }; + } data; + + /* Erase the entire structure including any padding */ + memset(&data, 0, sizeof(data)); /* * Add some noise from the thread id and a high resolution timer. diff --git a/crypto/rand/rand_vms.c b/crypto/rand/rand_vms.c index d35106a310e..3f13529d0f6 100644 --- a/crypto/rand/rand_vms.c +++ b/crypto/rand/rand_vms.c @@ -475,7 +475,10 @@ int rand_pool_add_nonce_data(RAND_POOL *pool) pid_t pid; CRYPTO_THREAD_ID tid; uint64_t time; - } data = { 0 }; + } data; + + /* Erase the entire structure including any padding */ + memset(&data, 0, sizeof(data)); /* * Add process id, thread id, and a high resolution timestamp @@ -499,7 +502,10 @@ int rand_pool_add_additional_data(RAND_POOL *pool) struct { CRYPTO_THREAD_ID tid; uint64_t time; - } data = { 0 }; + } data; + + /* Erase the entire structure including any padding */ + memset(&data, 0, sizeof(data)); /* * Add some noise from the thread id and a high resolution timer. diff --git a/crypto/rand/rand_win.c b/crypto/rand/rand_win.c index ceeae379d50..278aee08b4f 100644 --- a/crypto/rand/rand_win.c +++ b/crypto/rand/rand_win.c @@ -125,7 +125,10 @@ int rand_pool_add_nonce_data(RAND_POOL *pool) DWORD pid; DWORD tid; FILETIME time; - } data = { 0 }; + } data; + + /* Erase the entire structure including any padding */ + memset(&data, 0, sizeof(data)); /* * Add process id, thread id, and a high resolution timestamp to @@ -144,7 +147,10 @@ int rand_pool_add_additional_data(RAND_POOL *pool) struct { DWORD tid; LARGE_INTEGER time; - } data = { 0 }; + } data; + + /* Erase the entire structure including any padding */ + memset(&data, 0, sizeof(data)); /* * Add some noise from the thread id and a high resolution timer.