gdhcp: Add SOCK_CLOEXEC to socket()
authorDaniel Wagner <daniel.wagner@bmw-carit.de>
Sun, 23 Oct 2011 12:16:26 +0000 (14:16 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Tue, 25 Oct 2011 11:35:14 +0000 (13:35 +0200)
Make sure all file descriptor are closed.

gdhcp/client.c
gdhcp/common.c
gdhcp/ipv4ll.c
gdhcp/server.c

index 8ea75d6..24614c7 100644 (file)
@@ -361,7 +361,7 @@ static void get_interface_mac_address(int index, uint8_t *mac_address)
        struct ifreq ifr;
        int sk, err;
 
-       sk = socket(PF_INET, SOCK_DGRAM, 0);
+       sk = socket(PF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0);
        if (sk < 0) {
                perror("Open socket error");
                return;
@@ -515,7 +515,7 @@ static int dhcp_l2_socket(int ifindex)
                .filter = (struct sock_filter *) filter_instr,
        };
 
-       fd = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP));
+       fd = socket(PF_PACKET, SOCK_DGRAM | SOCK_CLOEXEC, htons(ETH_P_IP));
        if (fd < 0)
                return fd;
 
index ff25dfe..43f6735 100644 (file)
@@ -301,7 +301,7 @@ int dhcp_send_raw_packet(struct dhcp_packet *dhcp_pkt,
                                offsetof(struct ip_udp_dhcp_packet, udp),
        };
 
-       fd = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP));
+       fd = socket(PF_PACKET, SOCK_DGRAM | SOCK_CLOEXEC, htons(ETH_P_IP));
        if (fd < 0)
                return -errno;
 
@@ -363,7 +363,7 @@ int dhcp_send_kernel_packet(struct dhcp_packet *dhcp_pkt,
                                        EXTEND_FOR_BUGGY_SERVERS,
        };
 
-       fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
+       fd = socket(PF_INET, SOCK_DGRAM | SOCK_CLOEXEC, IPPROTO_UDP);
        if (fd < 0)
                return -errno;
 
@@ -402,7 +402,7 @@ int dhcp_l3_socket(int port, const char *interface)
        int fd, opt = 1;
        struct sockaddr_in addr;
 
-       fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
+       fd = socket(PF_INET, SOCK_DGRAM | SOCK_CLOEXEC, IPPROTO_UDP);
 
        setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
 
@@ -431,7 +431,7 @@ char *get_interface_name(int index)
        if (index < 0)
                return NULL;
 
-       sk = socket(PF_INET, SOCK_DGRAM, 0);
+       sk = socket(PF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0);
        if (sk < 0) {
                perror("Open socket error");
                return NULL;
@@ -458,7 +458,7 @@ gboolean interface_is_up(int index)
        struct ifreq ifr;
        gboolean ret = FALSE;
 
-       sk = socket(PF_INET, SOCK_DGRAM, 0);
+       sk = socket(PF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0);
        if (sk < 0) {
                perror("Open socket error");
                return FALSE;
index b35626d..4c09572 100644 (file)
@@ -79,7 +79,7 @@ int ipv4ll_send_arp_packet(uint8_t* source_eth, uint32_t source_ip,
        uint32_t ip_target;
        int fd, n;
 
-       fd = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_ARP));
+       fd = socket(PF_PACKET, SOCK_DGRAM | SOCK_CLOEXEC, htons(ETH_P_ARP));
        if (fd < 0)
                return -errno;
 
@@ -122,7 +122,7 @@ int ipv4ll_arp_socket(int ifindex)
 {
        int fd;
        struct sockaddr_ll sock;
-       fd = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_ARP));
+       fd = socket(PF_PACKET, SOCK_DGRAM | SOCK_CLOEXEC, htons(ETH_P_ARP));
        if (fd < 0)
                return fd;
 
index 099c50c..54c068b 100644 (file)
@@ -317,7 +317,7 @@ static uint32_t get_interface_address(int index)
        struct sockaddr_in *server_ip;
        uint32_t ret = 0;
 
-       sk = socket(PF_INET, SOCK_DGRAM, 0);
+       sk = socket(PF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0);
        if (sk < 0) {
                perror("Open socket error");
                return 0;