From: Geliang Tang <tanggeliang@kylinos.cn>
Replace /dev/urandom with getrandom() for initializing the RNG. This
simplifies the code and avoids potential failures from opening device
files while maintaining cryptographic quality randomness.
These codes are from mptcp_inq.c.
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
.../selftests/net/mptcp/mptcp_sockopt.c | 20 +++++++------------
1 file changed, 7 insertions(+), 13 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.c b/tools/testing/selftests/net/mptcp/mptcp_sockopt.c
index e934dd26a59d..2bd75f731dfd 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.c
+++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.c
@@ -20,6 +20,7 @@
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/wait.h>
+#include <sys/random.h>
#include <netdb.h>
#include <netinet/in.h>
@@ -815,21 +816,14 @@ static int rcheck(int wstatus, const char *what)
static void init_rng(void)
{
- int fd = open("/dev/urandom", O_RDONLY);
+ unsigned int foo;
- if (fd >= 0) {
- unsigned int foo;
- ssize_t ret;
-
- /* can't fail */
- ret = read(fd, &foo, sizeof(foo));
- assert(ret == sizeof(foo));
-
- close(fd);
- srand(foo);
- } else {
- srand(time(NULL));
+ if (getrandom(&foo, sizeof(foo), 0) == -1) {
+ perror("getrandom");
+ exit(1);
}
+
+ srand(foo);
}
int main(int argc, char *argv[])
--
2.48.1