sandbox: eth-raw: Make sure descriptors are always initialized
authorJoe Hershberger <joe.hershberger@ni.com>
Mon, 2 Jul 2018 19:47:47 +0000 (14:47 -0500)
committerJoe Hershberger <joe.hershberger@ni.com>
Thu, 26 Jul 2018 19:08:17 +0000 (14:08 -0500)
If we let descriptors equal 0, we can end up closing STDIN. Make sure
they start out as -1.

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

index 61f23ed..4263d88 100644 (file)
@@ -34,6 +34,7 @@ static int _raw_packet_start(const char *ifname, unsigned char *ethmac,
        int flags;
 
        /* Prepare device struct */
+       priv->local_bind_sd = -1;
        priv->device = malloc(sizeof(struct sockaddr_ll));
        if (priv->device == NULL)
                return -ENOMEM;
@@ -103,6 +104,8 @@ static int _local_inet_start(struct eth_sandbox_raw_priv *priv)
        int one = 1;
 
        /* Prepare device struct */
+       priv->local_bind_sd = -1;
+       priv->local_bind_udp_port = 0;
        priv->device = malloc(sizeof(struct sockaddr_in));
        if (priv->device == NULL)
                return -ENOMEM;
@@ -136,8 +139,6 @@ static int _local_inet_start(struct eth_sandbox_raw_priv *priv)
                       strerror(errno));
                return -errno;
        }
-       priv->local_bind_sd = -1;
-       priv->local_bind_udp_port = 0;
        return 0;
 }