]> git.wh0rd.org - home.git/commitdiff
vunshare: check socket() return
authorMike Frysinger <vapier@gentoo.org>
Thu, 29 Dec 2016 23:12:33 +0000 (18:12 -0500)
committerMike Frysinger <vapier@gentoo.org>
Thu, 29 Dec 2016 23:12:33 +0000 (18:12 -0500)
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");