d2e1ce4
From 2a97ab28ee00586e5f06b3ef3a0e43ea0c7c6499 Mon Sep 17 00:00:00 2001
d2e1ce4
From: Michal Sekletar <msekleta@redhat.com>
d2e1ce4
Date: Mon, 7 Apr 2014 14:21:41 +0200
d2e1ce4
Subject: [PATCH 14/27] everywhere: use SOCK_CLOEXEC when creating socket
d2e1ce4
d2e1ce4
---
d2e1ce4
 pppd/plugins/pppoatm/pppoatm.c          |  2 +-
d2e1ce4
 pppd/plugins/pppol2tp/openl2tp.c        |  2 +-
d2e1ce4
 pppd/plugins/pppol2tp/pppol2tp.c        |  2 +-
d2e1ce4
 pppd/plugins/rp-pppoe/if.c              |  2 +-
d2e1ce4
 pppd/plugins/rp-pppoe/plugin.c          |  6 +++---
d2e1ce4
 pppd/plugins/rp-pppoe/pppoe-discovery.c |  2 +-
d2e1ce4
 pppd/sys-linux.c                        | 10 +++++-----
d2e1ce4
 pppd/tty.c                              |  2 +-
d2e1ce4
 8 files changed, 14 insertions(+), 14 deletions(-)
d2e1ce4
d2e1ce4
diff --git a/pppd/plugins/pppoatm/pppoatm.c b/pppd/plugins/pppoatm/pppoatm.c
d2e1ce4
index d693350..c31bb34 100644
d2e1ce4
--- a/pppd/plugins/pppoatm/pppoatm.c
d2e1ce4
+++ b/pppd/plugins/pppoatm/pppoatm.c
d2e1ce4
@@ -135,7 +135,7 @@ static int connect_pppoatm(void)
d2e1ce4
 
d2e1ce4
 	if (!device_got_set)
d2e1ce4
 		no_device_given_pppoatm();
d2e1ce4
-	fd = socket(AF_ATMPVC, SOCK_DGRAM, 0);
d2e1ce4
+	fd = socket(AF_ATMPVC, SOCK_DGRAM | SOCK_CLOEXEC, 0);
d2e1ce4
 	if (fd < 0)
d2e1ce4
 		fatal("failed to create socket: %m");
d2e1ce4
 	memset(&qos, 0, sizeof qos);
d2e1ce4
diff --git a/pppd/plugins/pppol2tp/openl2tp.c b/pppd/plugins/pppol2tp/openl2tp.c
d2e1ce4
index 9643b96..1099575 100644
d2e1ce4
--- a/pppd/plugins/pppol2tp/openl2tp.c
d2e1ce4
+++ b/pppd/plugins/pppol2tp/openl2tp.c
d2e1ce4
@@ -83,7 +83,7 @@ static int openl2tp_client_create(void)
d2e1ce4
 	int result;
d2e1ce4
 
d2e1ce4
 	if (openl2tp_fd < 0) {
d2e1ce4
-		openl2tp_fd = socket(PF_UNIX, SOCK_DGRAM, 0);
d2e1ce4
+		openl2tp_fd = socket(PF_UNIX, SOCK_DGRAM | SOCK_CLOEXEC, 0);
d2e1ce4
 		if (openl2tp_fd < 0) {
d2e1ce4
 			error("openl2tp connection create: %m");
d2e1ce4
 			return -ENOTCONN;
d2e1ce4
diff --git a/pppd/plugins/pppol2tp/pppol2tp.c b/pppd/plugins/pppol2tp/pppol2tp.c
d2e1ce4
index a7e3400..e64a778 100644
d2e1ce4
--- a/pppd/plugins/pppol2tp/pppol2tp.c
d2e1ce4
+++ b/pppd/plugins/pppol2tp/pppol2tp.c
d2e1ce4
@@ -208,7 +208,7 @@ static void send_config_pppol2tp(int mtu,
d2e1ce4
 		struct ifreq ifr;
d2e1ce4
 		int fd;
d2e1ce4
 
d2e1ce4
-		fd = socket(AF_INET, SOCK_DGRAM, 0);
d2e1ce4
+		fd = socket(AF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0);
d2e1ce4
 		if (fd >= 0) {
d2e1ce4
 			memset (&ifr, '\0', sizeof (ifr));
d2e1ce4
 			strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
d2e1ce4
diff --git a/pppd/plugins/rp-pppoe/if.c b/pppd/plugins/rp-pppoe/if.c
d2e1ce4
index 91e9a57..72aba41 100644
d2e1ce4
--- a/pppd/plugins/rp-pppoe/if.c
d2e1ce4
+++ b/pppd/plugins/rp-pppoe/if.c
d2e1ce4
@@ -116,7 +116,7 @@ openInterface(char const *ifname, UINT16_t type, unsigned char *hwaddr)
d2e1ce4
     stype = SOCK_PACKET;
d2e1ce4
 #endif
d2e1ce4
 
d2e1ce4
-    if ((fd = socket(domain, stype, htons(type))) < 0) {
d2e1ce4
+    if ((fd = socket(domain, stype | SOCK_CLOEXEC, htons(type))) < 0) {
d2e1ce4
 	/* Give a more helpful message for the common error case */
d2e1ce4
 	if (errno == EPERM) {
d2e1ce4
 	    fatal("Cannot create raw socket -- pppoe must be run as root.");
d2e1ce4
diff --git a/pppd/plugins/rp-pppoe/plugin.c b/pppd/plugins/rp-pppoe/plugin.c
d2e1ce4
index a8c2bb4..24bdf8f 100644
d2e1ce4
--- a/pppd/plugins/rp-pppoe/plugin.c
d2e1ce4
+++ b/pppd/plugins/rp-pppoe/plugin.c
d2e1ce4
@@ -137,7 +137,7 @@ PPPOEConnectDevice(void)
d2e1ce4
     /* server equipment).                                                  */
d2e1ce4
     /* Opening this socket just before waitForPADS in the discovery()      */
d2e1ce4
     /* function would be more appropriate, but it would mess-up the code   */
d2e1ce4
-    conn->sessionSocket = socket(AF_PPPOX, SOCK_STREAM, PX_PROTO_OE);
d2e1ce4
+    conn->sessionSocket = socket(AF_PPPOX, SOCK_STREAM | SOCK_CLOEXEC, PX_PROTO_OE);
d2e1ce4
     if (conn->sessionSocket < 0) {
d2e1ce4
 	error("Failed to create PPPoE socket: %m");
d2e1ce4
 	return -1;
d2e1ce4
@@ -148,7 +148,7 @@ PPPOEConnectDevice(void)
d2e1ce4
     lcp_wantoptions[0].mru = conn->mru;
d2e1ce4
 
d2e1ce4
     /* Update maximum MRU */
d2e1ce4
-    s = socket(AF_INET, SOCK_DGRAM, 0);
d2e1ce4
+    s = socket(AF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0);
d2e1ce4
     if (s < 0) {
d2e1ce4
 	error("Can't get MTU for %s: %m", conn->ifName);
d2e1ce4
 	goto errout;
d2e1ce4
@@ -320,7 +320,7 @@ PPPoEDevnameHook(char *cmd, char **argv, int doit)
d2e1ce4
     }
d2e1ce4
 
d2e1ce4
     /* Open a socket */
d2e1ce4
-    if ((fd = socket(PF_PACKET, SOCK_RAW, 0)) < 0) {
d2e1ce4
+    if ((fd = socket(PF_PACKET, SOCK_RAW | SOCK_CLOEXEC, 0)) < 0) {
d2e1ce4
 	r = 0;
d2e1ce4
     }
d2e1ce4
 
d2e1ce4
diff --git a/pppd/plugins/rp-pppoe/pppoe-discovery.c b/pppd/plugins/rp-pppoe/pppoe-discovery.c
d2e1ce4
index 3d3bf4e..c0d927d 100644
d2e1ce4
--- a/pppd/plugins/rp-pppoe/pppoe-discovery.c
d2e1ce4
+++ b/pppd/plugins/rp-pppoe/pppoe-discovery.c
d2e1ce4
@@ -121,7 +121,7 @@ openInterface(char const *ifname, UINT16_t type, unsigned char *hwaddr)
d2e1ce4
     stype = SOCK_PACKET;
d2e1ce4
 #endif
d2e1ce4
 
d2e1ce4
-    if ((fd = socket(domain, stype, htons(type))) < 0) {
d2e1ce4
+    if ((fd = socket(domain, stype | SOCK_CLOEXEC, htons(type))) < 0) {
d2e1ce4
 	/* Give a more helpful message for the common error case */
d2e1ce4
 	if (errno == EPERM) {
d2e1ce4
 	    rp_fatal("Cannot create raw socket -- pppoe must be run as root.");
d2e1ce4
diff --git a/pppd/sys-linux.c b/pppd/sys-linux.c
d2e1ce4
index 00a2cf5..0690019 100644
d2e1ce4
--- a/pppd/sys-linux.c
d2e1ce4
+++ b/pppd/sys-linux.c
d2e1ce4
@@ -308,12 +308,12 @@ static int modify_flags(int fd, int clear_bits, int set_bits)
d2e1ce4
 void sys_init(void)
d2e1ce4
 {
d2e1ce4
     /* Get an internet socket for doing socket ioctls. */
d2e1ce4
-    sock_fd = socket(AF_INET, SOCK_DGRAM, 0);
d2e1ce4
+    sock_fd = socket(AF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0);
d2e1ce4
     if (sock_fd < 0)
d2e1ce4
 	fatal("Couldn't create IP socket: %m(%d)", errno);
d2e1ce4
 
d2e1ce4
 #ifdef INET6
d2e1ce4
-    sock6_fd = socket(AF_INET6, SOCK_DGRAM, 0);
d2e1ce4
+    sock6_fd = socket(AF_INET6, SOCK_DGRAM | SOCK_CLOEXEC, 0);
d2e1ce4
     if (sock6_fd < 0)
d2e1ce4
 	sock6_fd = -errno;	/* save errno for later */
d2e1ce4
 #endif
d2e1ce4
@@ -1857,7 +1857,7 @@ get_if_hwaddr(u_char *addr, char *name)
d2e1ce4
 	struct ifreq ifreq;
d2e1ce4
 	int ret, sock_fd;
d2e1ce4
 
d2e1ce4
-	sock_fd = socket(AF_INET, SOCK_DGRAM, 0);
d2e1ce4
+	sock_fd = socket(AF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0);
d2e1ce4
 	if (sock_fd < 0)
d2e1ce4
 		return 0;
d2e1ce4
 	memset(&ifreq.ifr_hwaddr, 0, sizeof(struct sockaddr));
d2e1ce4
@@ -2067,7 +2067,7 @@ int ppp_available(void)
d2e1ce4
 /*
d2e1ce4
  * Open a socket for doing the ioctl operations.
d2e1ce4
  */
d2e1ce4
-    s = socket(AF_INET, SOCK_DGRAM, 0);
d2e1ce4
+    s = socket(AF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0);
d2e1ce4
     if (s < 0)
d2e1ce4
 	return 0;
d2e1ce4
 
d2e1ce4
@@ -2860,7 +2860,7 @@ ether_to_eui64(eui64_t *p_eui64)
d2e1ce4
     int skfd;
d2e1ce4
     const unsigned char *ptr;
d2e1ce4
 
d2e1ce4
-    skfd = socket(PF_INET6, SOCK_DGRAM, 0);
d2e1ce4
+    skfd = socket(PF_INET6, SOCK_DGRAM | SOCK_CLOEXEC, 0);
d2e1ce4
     if(skfd == -1)
d2e1ce4
     {
d2e1ce4
         warn("could not open IPv6 socket");
d2e1ce4
diff --git a/pppd/tty.c b/pppd/tty.c
d2e1ce4
index bc96695..8e76a5d 100644
d2e1ce4
--- a/pppd/tty.c
d2e1ce4
+++ b/pppd/tty.c
d2e1ce4
@@ -896,7 +896,7 @@ open_socket(dest)
d2e1ce4
     *sep = ':';
d2e1ce4
 
d2e1ce4
     /* get a socket and connect it to the other end */
d2e1ce4
-    sock = socket(PF_INET, SOCK_STREAM, 0);
d2e1ce4
+    sock = socket(PF_INET, SOCK_STREAM | SOCK_CLOEXEC, 0);
d2e1ce4
     if (sock < 0) {
d2e1ce4
 	error("Can't create socket: %m");
d2e1ce4
 	return -1;
d2e1ce4
-- 
d2e1ce4
1.8.3.1
d2e1ce4