diff options
author | Thomas Haller <thaller@redhat.com> | 2016-12-10 15:28:15 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2016-12-13 11:26:59 +0100 |
commit | 4bdee37771ae741f4f9548b52c1db53ddf080fe8 (patch) | |
tree | a531d21aa0fc18c62c50669bd5faa083af270566 | |
parent | e332c278245abc2c0d6e63ca9f36aa77961b15d5 (diff) |
all: use O_CLOEXEC for file descriptors
-rw-r--r-- | src/devices/adsl/nm-device-adsl.c | 4 | ||||
-rw-r--r-- | src/devices/bluetooth/nm-bluez5-dun.c | 4 | ||||
-rw-r--r-- | src/devices/tests/test-lldp.c | 4 | ||||
-rw-r--r-- | src/devices/wwan/nm-modem.c | 2 | ||||
-rw-r--r-- | src/dns/nm-dns-manager.c | 4 | ||||
-rw-r--r-- | src/main-utils.c | 2 | ||||
-rw-r--r-- | src/nm-core-utils.c | 2 | ||||
-rw-r--r-- | src/nm-manager.c | 2 | ||||
-rw-r--r-- | src/platform/nm-linux-platform.c | 2 | ||||
-rw-r--r-- | src/platform/nm-platform-utils.c | 4 | ||||
-rw-r--r-- | src/platform/nmp-netns.c | 6 | ||||
-rw-r--r-- | src/platform/tests/test-common.c | 12 | ||||
-rw-r--r-- | src/platform/wifi/wifi-utils-wext.c | 4 | ||||
-rw-r--r-- | src/ppp/nm-ppp-manager.c | 4 | ||||
-rw-r--r-- | src/settings/nm-inotify-helper.c | 2 | ||||
-rw-r--r-- | src/settings/plugins/ifcfg-rh/shvar.c | 6 | ||||
-rw-r--r-- | src/settings/plugins/ifupdown/nms-ifupdown-interface-parser.c | 2 | ||||
-rw-r--r-- | src/tests/test-general-with-expect.c | 3 |
18 files changed, 35 insertions, 34 deletions
diff --git a/src/devices/adsl/nm-device-adsl.c b/src/devices/adsl/nm-device-adsl.c index 8f8037c25..9af6e6903 100644 --- a/src/devices/adsl/nm-device-adsl.c +++ b/src/devices/adsl/nm-device-adsl.c @@ -158,7 +158,7 @@ br2684_assign_vcc (NMDeviceAdsl *self, NMSettingAdsl *s_adsl) g_return_val_if_fail (priv->brfd == -1, FALSE); g_return_val_if_fail (priv->nas_ifname != NULL, FALSE); - priv->brfd = socket (PF_ATMPVC, SOCK_DGRAM, ATM_AAL5); + priv->brfd = socket (PF_ATMPVC, SOCK_DGRAM | SOCK_CLOEXEC, ATM_AAL5); if (priv->brfd < 0) { errsv = errno; _LOGE (LOGD_ADSL, "failed to open ATM control socket (%d)", errsv); @@ -344,7 +344,7 @@ br2684_create_iface (NMDeviceAdsl *self, nm_clear_g_source (&priv->nas_update_id); } - fd = socket (PF_ATMPVC, SOCK_DGRAM, ATM_AAL5); + fd = socket (PF_ATMPVC, SOCK_DGRAM | SOCK_CLOEXEC, ATM_AAL5); if (fd < 0) { errsv = errno; _LOGE (LOGD_ADSL, "failed to open ATM control socket (%d)", errsv); diff --git a/src/devices/bluetooth/nm-bluez5-dun.c b/src/devices/bluetooth/nm-bluez5-dun.c index 4c93feba6..aba3a0dd9 100644 --- a/src/devices/bluetooth/nm-bluez5-dun.c +++ b/src/devices/bluetooth/nm-bluez5-dun.c @@ -64,7 +64,7 @@ dun_connect (NMBluez5DunContext *context) .channel = context->rfcomm_channel }; - context->rfcomm_fd = socket (AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM); + context->rfcomm_fd = socket (AF_BLUETOOTH, SOCK_STREAM | SOCK_CLOEXEC, BTPROTO_RFCOMM); if (context->rfcomm_fd < 0) { int errsv = errno; error = g_error_new (NM_BT_ERROR, NM_BT_ERROR_DUN_CONNECT_FAILED, @@ -112,7 +112,7 @@ dun_connect (NMBluez5DunContext *context) context->rfcomm_id = devid; snprintf (tty, ttylen, "/dev/rfcomm%d", devid); - while ((context->rfcomm_tty_fd = open (tty, O_RDONLY | O_NOCTTY)) < 0 && try--) { + while ((context->rfcomm_tty_fd = open (tty, O_RDONLY | O_NOCTTY | O_CLOEXEC)) < 0 && try--) { if (try) { g_usleep (100 * 1000); continue; diff --git a/src/devices/tests/test-lldp.c b/src/devices/tests/test-lldp.c index 5d28d461d..4d25f9a68 100644 --- a/src/devices/tests/test-lldp.c +++ b/src/devices/tests/test-lldp.c @@ -350,7 +350,7 @@ _test_recv_fixture_setup (TestRecvFixture *fixture, gconstpointer user_data) struct ifreq ifr = { }; int fd, s; - fd = open ("/dev/net/tun", O_RDWR); + fd = open ("/dev/net/tun", O_RDWR | O_CLOEXEC); g_assert (fd >= 0); ifr.ifr_flags = IFF_TAP | IFF_NO_PI; @@ -358,7 +358,7 @@ _test_recv_fixture_setup (TestRecvFixture *fixture, gconstpointer user_data) g_assert (ioctl (fd, TUNSETIFF, &ifr) >= 0); /* Bring the interface up */ - s = socket (AF_INET, SOCK_DGRAM, 0); + s = socket (AF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0); g_assert (s >= 0); ifr.ifr_flags |= IFF_UP; g_assert (ioctl (s, SIOCSIFFLAGS, &ifr) >= 0); diff --git a/src/devices/wwan/nm-modem.c b/src/devices/wwan/nm-modem.c index 1c72c70e0..635f20ea7 100644 --- a/src/devices/wwan/nm-modem.c +++ b/src/devices/wwan/nm-modem.c @@ -500,7 +500,7 @@ port_speed_is_zero (const char *port) struct termios options; nm_auto_close int fd = -1; - fd = open (port, O_RDWR | O_NONBLOCK | O_NOCTTY); + fd = open (port, O_RDWR | O_NONBLOCK | O_NOCTTY | O_CLOEXEC); if (fd < 0) return FALSE; diff --git a/src/dns/nm-dns-manager.c b/src/dns/nm-dns-manager.c index c8ebe23a4..c52777cff 100644 --- a/src/dns/nm-dns-manager.c +++ b/src/dns/nm-dns-manager.c @@ -719,7 +719,7 @@ update_resolv_conf (NMDnsManager *self, } } - if ((f = fopen (MY_RESOLV_CONF_TMP, "w")) == NULL) { + if ((f = fopen (MY_RESOLV_CONF_TMP, "we")) == NULL) { errsv = errno; g_set_error (error, NM_MANAGER_ERROR, @@ -1594,7 +1594,7 @@ _check_resconf_immutable (NMDnsManagerResolvConfManager rc_manager) } } - fd = open (_PATH_RESCONF, O_RDONLY); + fd = open (_PATH_RESCONF, O_RDONLY | O_CLOEXEC); if (fd != -1) { if (ioctl (fd, FS_IOC_GETFLAGS, &flags) != -1) immutable = NM_FLAGS_HAS (flags, FS_IMMUTABLE_FL); diff --git a/src/main-utils.c b/src/main-utils.c index bad3141ab..9e3aa7bd5 100644 --- a/src/main-utils.c +++ b/src/main-utils.c @@ -95,7 +95,7 @@ nm_main_utils_write_pidfile (const char *pidfile) int fd; gboolean success = FALSE; - if ((fd = open (pidfile, O_CREAT|O_WRONLY|O_TRUNC, 00644)) < 0) { + if ((fd = open (pidfile, O_CREAT | O_WRONLY | O_TRUNC | O_CLOEXEC, 00644)) < 0) { fprintf (stderr, _("Opening %s failed: %s\n"), pidfile, strerror (errno)); return FALSE; } diff --git a/src/nm-core-utils.c b/src/nm-core-utils.c index 257733064..70af93383 100644 --- a/src/nm-core-utils.c +++ b/src/nm-core-utils.c @@ -3050,7 +3050,7 @@ nm_utils_read_urandom (void *p, size_t nbytes) int r; again: - fd = open ("/dev/urandom", O_RDONLY|O_CLOEXEC|O_NOCTTY); + fd = open ("/dev/urandom", O_RDONLY | O_CLOEXEC | O_NOCTTY); if (fd < 0) { r = errno; if (r == EINTR) diff --git a/src/nm-manager.c b/src/nm-manager.c index 8414f1880..58a60b197 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -5450,7 +5450,7 @@ rfkill_change (NMManager *self, const char *desc, RfKillType rtype, gboolean ena g_return_if_fail (rtype == RFKILL_TYPE_WLAN || rtype == RFKILL_TYPE_WWAN); errno = 0; - fd = open ("/dev/rfkill", O_RDWR); + fd = open ("/dev/rfkill", O_RDWR | O_CLOEXEC); if (fd < 0) { if (errno == EACCES) _LOGW (LOGD_RFKILL, "(%s): failed to open killswitch device", desc); diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c index c4e53965a..c6431912a 100644 --- a/src/platform/nm-linux-platform.c +++ b/src/platform/nm-linux-platform.c @@ -5167,7 +5167,7 @@ tun_add (NMPlatform *platform, const char *name, gboolean tap, _LOGD ("link: add %s '%s' owner %" G_GINT64_FORMAT " group %" G_GINT64_FORMAT, tap ? "tap" : "tun", name, owner, group); - fd = open ("/dev/net/tun", O_RDWR); + fd = open ("/dev/net/tun", O_RDWR | O_CLOEXEC); if (fd < 0) return FALSE; diff --git a/src/platform/nm-platform-utils.c b/src/platform/nm-platform-utils.c index 78da4365f..8f8588484 100644 --- a/src/platform/nm-platform-utils.c +++ b/src/platform/nm-platform-utils.c @@ -70,7 +70,7 @@ ethtool_get (const char *name, gpointer edata) nm_utils_ifname_cpy (ifr.ifr_name, name); ifr.ifr_data = edata; - fd = socket (PF_INET, SOCK_DGRAM, 0); + fd = socket (PF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0); if (fd < 0) { nm_log_err (LOGD_PLATFORM, "ethtool: Could not open socket."); return FALSE; @@ -410,7 +410,7 @@ nmp_utils_mii_supports_carrier_detect (const char *ifname) if (!nmp_utils_device_exists (ifname)) return FALSE; - fd = socket (PF_INET, SOCK_DGRAM, 0); + fd = socket (PF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0); if (fd < 0) { nm_log_err (LOGD_PLATFORM, "mii: couldn't open control socket (%s)", ifname); return FALSE; diff --git a/src/platform/nmp-netns.c b/src/platform/nmp-netns.c index f3704f031..232c6efc9 100644 --- a/src/platform/nmp-netns.c +++ b/src/platform/nmp-netns.c @@ -284,7 +284,7 @@ _netns_new (GError **error) int fd_net, fd_mnt; int errsv; - fd_net = open (PROC_SELF_NS_NET, O_RDONLY); + fd_net = open (PROC_SELF_NS_NET, O_RDONLY | O_CLOEXEC); if (fd_net == -1) { errsv = errno; g_set_error (error, NM_UTILS_ERROR, NM_UTILS_ERROR_UNKNOWN, @@ -293,7 +293,7 @@ _netns_new (GError **error) return NULL; } - fd_mnt = open (PROC_SELF_NS_MNT, O_RDONLY); + fd_mnt = open (PROC_SELF_NS_MNT, O_RDONLY | O_CLOEXEC); if (fd_mnt == -1) { errsv = errno; g_set_error (error, NM_UTILS_ERROR, NM_UTILS_ERROR_UNKNOWN, @@ -631,7 +631,7 @@ nmp_netns_bind_to_path (NMPNetns *self, const char *filename, int *out_fd) } if (out_fd) { - if ((fd = open (filename, O_RDONLY)) == -1) { + if ((fd = open (filename, O_RDONLY | O_CLOEXEC)) == -1) { errsv = errno; _LOGE (self, "bind: failed to open %s: %s", filename, g_strerror (errsv)); umount2 (filename, MNT_DETACH); diff --git a/src/platform/tests/test-common.c b/src/platform/tests/test-common.c index 860e6b7ca..89cbd188e 100644 --- a/src/platform/tests/test-common.c +++ b/src/platform/tests/test-common.c @@ -1407,7 +1407,7 @@ nmtstp_namespace_create (int unshare_flags, GError **error) int pipefd_p2c[2]; ssize_t r; - e = pipe (pipefd_c2p); + e = pipe2 (pipefd_c2p, O_CLOEXEC); if (e != 0) { errsv = errno; g_set_error (error, NM_UTILS_ERROR, NM_UTILS_ERROR_UNKNOWN, @@ -1415,7 +1415,7 @@ nmtstp_namespace_create (int unshare_flags, GError **error) return FALSE; } - e = pipe (pipefd_p2c); + e = pipe2 (pipefd_p2c, O_CLOEXEC); if (e != 0) { errsv = errno; g_set_error (error, NM_UTILS_ERROR, NM_UTILS_ERROR_UNKNOWN, @@ -1549,7 +1549,7 @@ nmtstp_namespace_get_fd_for_process (pid_t pid, const char *ns_name) nm_sprintf_buf (p, "/proc/%lu/ns/%s", (long unsigned) pid, ns_name); - return open(p, O_RDONLY); + return open(p, O_RDONLY | O_CLOEXEC); } /*****************************************************************************/ @@ -1592,21 +1592,21 @@ unshare_user (void) /* Since Linux 3.19 we have to disable setgroups() in order to map users. * Just proceed if the file is not there. */ - f = fopen ("/proc/self/setgroups", "w"); + f = fopen ("/proc/self/setgroups", "we"); if (f) { fprintf (f, "deny"); fclose (f); } /* Map current UID to root in NS to be created. */ - f = fopen ("/proc/self/uid_map", "w"); + f = fopen ("/proc/self/uid_map", "we"); if (!f) return FALSE; fprintf (f, "0 %d 1", uid); fclose (f); /* Map current GID to root in NS to be created. */ - f = fopen ("/proc/self/gid_map", "w"); + f = fopen ("/proc/self/gid_map", "we"); if (!f) return FALSE; fprintf (f, "0 %d 1", gid); diff --git a/src/platform/wifi/wifi-utils-wext.c b/src/platform/wifi/wifi-utils-wext.c index 3936bbe37..398f3c558 100644 --- a/src/platform/wifi/wifi-utils-wext.c +++ b/src/platform/wifi/wifi-utils-wext.c @@ -577,7 +577,7 @@ wifi_wext_init (const char *iface, int ifindex, gboolean check_scan) wext->parent.set_mesh_channel = wifi_wext_set_mesh_channel; wext->parent.set_mesh_ssid = wifi_wext_set_mesh_ssid; - wext->fd = socket (PF_INET, SOCK_DGRAM, 0); + wext->fd = socket (PF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0); if (wext->fd < 0) goto error; @@ -665,7 +665,7 @@ wifi_wext_is_wifi (const char *iface) if (!nmp_utils_device_exists (iface)) return FALSE; - fd = socket (PF_INET, SOCK_DGRAM, 0); + fd = socket (PF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0); if (fd >= 0) { nm_utils_ifname_cpy (iwr.ifr_ifrn.ifrn_name, iface); if (ioctl (fd, SIOCGIWNAME, &iwr) == 0) diff --git a/src/ppp/nm-ppp-manager.c b/src/ppp/nm-ppp-manager.c index c8d43299d..e33d9fe6f 100644 --- a/src/ppp/nm-ppp-manager.c +++ b/src/ppp/nm-ppp-manager.c @@ -148,7 +148,7 @@ monitor_cb (gpointer user_data) if (errno != ENODEV) _LOGW ("could not read ppp stats: %s", strerror (errno)); } else { - g_signal_emit (manager, signals[STATS], 0, + g_signal_emit (manager, signals[STATS], 0, stats.p.ppp_ibytes, stats.p.ppp_obytes); } @@ -165,7 +165,7 @@ monitor_stats (NMPPPManager *manager) if (priv->monitor_fd >= 0) return; - priv->monitor_fd = socket (AF_INET, SOCK_DGRAM, 0); + priv->monitor_fd = socket (AF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0); if (priv->monitor_fd >= 0) { g_warn_if_fail (priv->monitor_id == 0); if (priv->monitor_id) diff --git a/src/settings/nm-inotify-helper.c b/src/settings/nm-inotify-helper.c index 44a102b05..a0432a25c 100644 --- a/src/settings/nm-inotify-helper.c +++ b/src/settings/nm-inotify-helper.c @@ -144,7 +144,7 @@ init_inotify (NMInotifyHelper *self) GIOChannel *channel; guint source_id; - priv->ifd = inotify_init (); + priv->ifd = inotify_init1 (IN_CLOEXEC); if (priv->ifd == -1) { int errsv = errno; diff --git a/src/settings/plugins/ifcfg-rh/shvar.c b/src/settings/plugins/ifcfg-rh/shvar.c index 22c942fce..28989e1df 100644 --- a/src/settings/plugins/ifcfg-rh/shvar.c +++ b/src/settings/plugins/ifcfg-rh/shvar.c @@ -641,11 +641,11 @@ svOpenFileInternal (const char *name, gboolean create, GError **error) s->fd = -1; if (create) - s->fd = open (name, O_RDWR); /* NOT O_CREAT */ + s->fd = open (name, O_RDWR | O_CLOEXEC); /* NOT O_CREAT */ if (!create || s->fd == -1) { /* try read-only */ - s->fd = open (name, O_RDONLY); /* NOT O_CREAT */ + s->fd = open (name, O_RDONLY | O_CLOEXEC); /* NOT O_CREAT */ if (s->fd == -1) errsv = errno; else @@ -1017,7 +1017,7 @@ svWriteFile (shvarFile *s, int mode, GError **error) if (s->modified) { if (s->fd == -1) - s->fd = open (s->fileName, O_WRONLY | O_CREAT, mode); + s->fd = open (s->fileName, O_WRONLY | O_CREAT | O_CLOEXEC, mode); if (s->fd == -1) { int errsv = errno; diff --git a/src/settings/plugins/ifupdown/nms-ifupdown-interface-parser.c b/src/settings/plugins/ifupdown/nms-ifupdown-interface-parser.c index df6d248c0..e86f52164 100644 --- a/src/settings/plugins/ifupdown/nms-ifupdown-interface-parser.c +++ b/src/settings/plugins/ifupdown/nms-ifupdown-interface-parser.c @@ -117,7 +117,7 @@ _recursive_ifparser (const char *eni_file, int quiet) nm_log_warn (LOGD_SETTINGS, "interfaces file %s doesn't exist\n", eni_file); return; } - inp = fopen (eni_file, "r"); + inp = fopen (eni_file, "re"); if (inp == NULL) { if (!quiet) nm_log_warn (LOGD_SETTINGS, "Can't open %s\n", eni_file); diff --git a/src/tests/test-general-with-expect.c b/src/tests/test-general-with-expect.c index 9338557b4..fbed7799b 100644 --- a/src/tests/test-general-with-expect.c +++ b/src/tests/test-general-with-expect.c @@ -26,6 +26,7 @@ #include <netinet/ether.h> #include <sys/types.h> #include <sys/wait.h> +#include <fcntl.h> #include "NetworkManagerUtils.h" #include "nm-multi-index.h" @@ -173,7 +174,7 @@ test_nm_utils_kill_child_create_and_join_pgroup (void) int pipefd[2]; pid_t pgid; - err = pipe (pipefd); + err = pipe2 (pipefd, O_CLOEXEC); g_assert (err == 0); pgid = fork(); |