]> git.wh0rd.org - home.git/blobdiff - vunshare.c
vunshare: check socket() return
[home.git] / vunshare.c
index 274eebcd9dc87e05008d3f57ff780012b1b2fb90..2e7efbbb85415fe15ad637e1baebf6576476d6ed 100644 (file)
@@ -51,14 +51,19 @@ static void unshare_net(void)
        if (!vunshare(CLONE_NEWNET))
                return;
 
-       int sock = socket(AF_LOCAL, SOCK_DGRAM|SOCK_CLOEXEC, 0);
+       int sock;
        struct ifreq ifr;
 
+       sock = socket(AF_LOCAL, SOCK_DGRAM|SOCK_CLOEXEC, 0);
+       if (sock < 0)
+               err(1, "socket(AF_LOCAL) failed");
+
        /* Equiv of `ip link set up lo`.  Kernel will assign 127.0.0.1 for us. */
        strcpy(ifr.ifr_name, "lo");
        if (ioctl(sock, SIOCGIFFLAGS, &ifr) < 0)
                err(1, "ioctl(SIOCGIFFLAGS) failed");
-       strcpy(ifr.ifr_name, "lo");
+
+       /* The kernel preserves ifr.ifr_name for use. */
        ifr.ifr_flags |= IFF_UP | IFF_RUNNING;
        if (ioctl(sock, SIOCSIFFLAGS, &ifr) < 0)
                err(1, "ioctl(SIOCSIFFLAGS) failed");