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");