From 44872af7c535501cd8ff5eb739d0c4989c435581 Mon Sep 17 00:00:00 2001 From: Sergey Fedorov Date: Sat, 20 Jan 2024 10:52:34 +0800 Subject: [PATCH 3/5] src/network/ssl: use qrand() to seed OpenSSL PRNG See: https://github.com/fluxer/katie/commit/6ce9c535ec300dbe543826e55172206993c5cad6 --- src/network/ssl/qsslsocket_openssl.cpp | 28 +++++--------------------- 1 file changed, 5 insertions(+), 23 deletions(-) diff --git src/network/ssl/qsslsocket_openssl.cpp src/network/ssl/qsslsocket_openssl.cpp index d6ae2a6b12..b8221c33ef 100644 --- src/network/ssl/qsslsocket_openssl.cpp +++ src/network/ssl/qsslsocket_openssl.cpp @@ -551,30 +551,12 @@ bool QSslSocketPrivate::ensureLibraryLoaded() // Initialize OpenSSL's random seed. if (!q_RAND_status()) { - struct { - int msec; - int sec; - void *stack; - } randomish; - - int attempts = 500; - do { - if (attempts < 500) { -#ifdef Q_OS_UNIX - struct timespec ts = {0, 33333333}; - nanosleep(&ts, 0); -#else - Sleep(3); -#endif - randomish.msec = attempts; - } - randomish.stack = (void *)&randomish; - randomish.msec = QTime::currentTime().msec(); - randomish.sec = QTime::currentTime().second(); - q_RAND_seed((const char *)&randomish, sizeof(randomish)); - } while (!q_RAND_status() && --attempts); - if (!attempts) + int randomish = qrand(); + q_RAND_seed(&randomish, sizeof(randomish)); + if (!q_RAND_status()) { + qWarning("Random number generator not seeded, disabling SSL support"); return false; + } s_libraryLoaded = true; } }