fix missing SOCK_CLOEXEC in various functions that use sockets internally
authorRich Felker <dalias@aerifal.cx>
Tue, 9 Jul 2013 04:40:17 +0000 (00:40 -0400)
committerRich Felker <dalias@aerifal.cx>
Tue, 9 Jul 2013 04:40:17 +0000 (00:40 -0400)
src/network/getifaddrs.c
src/network/if_indextoname.c
src/network/if_nameindex.c
src/network/if_nametoindex.c

index a4c317821d2a3aaea8b7ecb9ecec27b1aab5d53f..a14ac1b3232184a704c2ae180fd9b6a983a0194c 100644 (file)
@@ -127,7 +127,7 @@ int getifaddrs(struct ifaddrs **ifap)
        }
        if_freenameindex(ii);
 
-       int sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
+       int sock = socket(PF_INET, SOCK_DGRAM|SOCK_CLOEXEC, IPPROTO_IP);
        if(sock == -1) goto err2;
        struct ifreq reqs[32]; /* arbitrary chosen boundary */
        struct ifconf conf = {.ifc_len = sizeof reqs, .ifc_req = reqs};
index f18f17a69ba7f35261ee57928f04417d667533b8..6ee7f13ce38ee10f1d32f7c9f266b9da2544beff 100644 (file)
@@ -10,7 +10,7 @@ char *if_indextoname(unsigned index, char *name)
        struct ifreq ifr;
        int fd, r;
 
-       if ((fd = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0) return 0;
+       if ((fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0)) < 0) return 0;
        ifr.ifr_ifindex = index;
        r = ioctl(fd, SIOCGIFNAME, &ifr);
        __syscall(SYS_close, fd);
index cdb956cb9500d3643969545a2a48e9866fcb825e..ad0a76624bf85bb5500998b07868570b14948a4f 100644 (file)
@@ -47,7 +47,7 @@ struct if_nameindex *if_nameindex()
 {
        size_t n;
        void *p = 0;
-       int s = socket(AF_UNIX, SOCK_DGRAM, 0);
+       int s = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0);
        if (s>=0) {
                for (n=0; (p=do_nameindex(s, n)) == (void *)-1; n++);
                __syscall(SYS_close, s);
index 419931f9f35311ab3da34c5633c47e58b82d133e..fb4a14747edeb4836f59a290391128a504c4019f 100644 (file)
@@ -10,7 +10,7 @@ unsigned if_nametoindex(const char *name)
        struct ifreq ifr;
        int fd, r;
 
-       if ((fd = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0) return -1;
+       if ((fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0)) < 0) return -1;
        strncpy(ifr.ifr_name, name, sizeof ifr.ifr_name);
        r = ioctl(fd, SIOCGIFINDEX, &ifr);
        __syscall(SYS_close, fd);