From: Daniel Wagner <[email protected]>
Make sure all file descriptor are closed.
---
gdhcp/client.c | 4 ++--
gdhcp/common.c | 10 +++++-----
gdhcp/ipv4ll.c | 4 ++--
gdhcp/server.c | 2 +-
4 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/gdhcp/client.c b/gdhcp/client.c
index 8ea75d6..24614c7 100644
--- a/gdhcp/client.c
+++ b/gdhcp/client.c
@@ -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;
diff --git a/gdhcp/common.c b/gdhcp/common.c
index ff25dfe..43f6735 100644
--- a/gdhcp/common.c
+++ b/gdhcp/common.c
@@ -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;
diff --git a/gdhcp/ipv4ll.c b/gdhcp/ipv4ll.c
index b35626d..4c09572 100644
--- a/gdhcp/ipv4ll.c
+++ b/gdhcp/ipv4ll.c
@@ -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;
diff --git a/gdhcp/server.c b/gdhcp/server.c
index 099c50c..54c068b 100644
--- a/gdhcp/server.c
+++ b/gdhcp/server.c
@@ -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;
--
1.7.7
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman