sandbox: eth-raw: Correct valid socket test in send/recv
authorJoe Hershberger <joe.hershberger@ni.com>
Mon, 2 Jul 2018 19:47:44 +0000 (14:47 -0500)
committerJoe Hershberger <joe.hershberger@ni.com>
Thu, 26 Jul 2018 19:08:17 +0000 (14:08 -0500)
In open, the socket is correctly checked to be -1 in the error case.
In send and recv, we checked for 0, but that is a valid socket number.

Correct this by checking for -1 as a bad socket everywhere.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
arch/sandbox/cpu/eth-raw-os.c

index e054a07..61f23ed 100644 (file)
@@ -156,7 +156,7 @@ int sandbox_eth_raw_os_send(void *packet, int length,
        int retval;
        struct udphdr *udph = packet + sizeof(struct iphdr);
 
-       if (!priv->sd || !priv->device)
+       if (priv->sd < 0 || !priv->device)
                return -EINVAL;
 
        /*
@@ -221,7 +221,7 @@ int sandbox_eth_raw_os_recv(void *packet, int *length,
        int retval;
        int saddr_size;
 
-       if (!priv->sd || !priv->device)
+       if (priv->sd < 0 || !priv->device)
                return -EINVAL;
        saddr_size = sizeof(struct sockaddr);
        retval = recvfrom(priv->sd, packet, 1536, 0,