Commit 00a4f8fd authored by Willem de Bruijn's avatar Willem de Bruijn Committed by Jakub Kicinski

selftests/net: mptcp: fix uninitialized variable warnings

Same init_rng() in both tests. The function reads /dev/urandom to
initialize srand(). In case of failure, it falls back onto the
entropy in the uninitialized variable. Not sure if this is on purpose.
But failure reading urandom should be rare, so just fail hard. While
at it, convert to getrandom(). Which man 4 random suggests is simpler
and more robust.

    mptcp_inq.c:525:6:
    mptcp_connect.c:1131:6:

    error: variable 'foo' is used uninitialized
    whenever 'if' condition is false
    [-Werror,-Wsometimes-uninitialized]

Fixes: 048d19d4 ("mptcp: add basic kselftest for mptcp")
Fixes: b5188056 ("selftests: mptcp: add inq test case")
Cc: Florian Westphal <fw@strlen.de>
Signed-off-by: default avatarWillem de Bruijn <willemb@google.com>

----

When input is randomized because this is expected to meaningfully
explore edge cases, should we also add
1. logging the random seed to stdout and
2. adding a command line argument to replay from a specific seed
I can do this in net-next, if authors find it useful in this case.
Reviewed-by: default avatarMatthieu Baerts <matttbe@kernel.org>

Link: https://lore.kernel.org/r/20231124171645.1011043-5-willemdebruijn.kernel@gmail.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 59fef379
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include <sys/ioctl.h> #include <sys/ioctl.h>
#include <sys/poll.h> #include <sys/poll.h>
#include <sys/random.h>
#include <sys/sendfile.h> #include <sys/sendfile.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/socket.h> #include <sys/socket.h>
...@@ -1125,15 +1126,11 @@ int main_loop_s(int listensock) ...@@ -1125,15 +1126,11 @@ int main_loop_s(int listensock)
static void init_rng(void) static void init_rng(void)
{ {
int fd = open("/dev/urandom", O_RDONLY);
unsigned int foo; unsigned int foo;
if (fd > 0) { if (getrandom(&foo, sizeof(foo), 0) == -1) {
int ret = read(fd, &foo, sizeof(foo)); perror("getrandom");
exit(1);
if (ret < 0)
srand(fd + foo);
close(fd);
} }
srand(foo); srand(foo);
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include <time.h> #include <time.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>
#include <sys/random.h>
#include <sys/socket.h> #include <sys/socket.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/wait.h> #include <sys/wait.h>
...@@ -519,15 +520,11 @@ static int client(int unixfd) ...@@ -519,15 +520,11 @@ static int client(int unixfd)
static void init_rng(void) static void init_rng(void)
{ {
int fd = open("/dev/urandom", O_RDONLY);
unsigned int foo; unsigned int foo;
if (fd > 0) { if (getrandom(&foo, sizeof(foo), 0) == -1) {
int ret = read(fd, &foo, sizeof(foo)); perror("getrandom");
exit(1);
if (ret < 0)
srand(fd + foo);
close(fd);
} }
srand(foo); srand(foo);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment