summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Wagner <daniel.wagner@bmw-carit.de>2011-10-23 14:16:25 +0200
committerMarcel Holtmann <marcel@holtmann.org>2011-10-25 13:34:51 +0200
commitc94b607044db60e5ff6a4b0a861a90bee35b3bc0 (patch)
tree09d8a4eb547fe5e908127444d14613106a4c8fb7
parentbd972fef32de3560bbe23ef41ba2281b696764fd (diff)
downloadconnman-c94b607044db60e5ff6a4b0a861a90bee35b3bc0.tar.gz
connman-c94b607044db60e5ff6a4b0a861a90bee35b3bc0.tar.bz2
connman-c94b607044db60e5ff6a4b0a861a90bee35b3bc0.zip
core: Add O_CLOEXEC to open()
Make sure all file descriptor are closed.
-rw-r--r--src/inet.c2
-rw-r--r--src/resolver.c2
-rw-r--r--src/rfkill.c4
-rw-r--r--src/stats.c2
-rw-r--r--src/timezone.c10
5 files changed, 10 insertions, 10 deletions
diff --git a/src/inet.c b/src/inet.c
index 56f29fdb..f7f72b8f 100644
--- a/src/inet.c
+++ b/src/inet.c
@@ -1379,7 +1379,7 @@ int connman_inet_create_tunnel(char **iface)
struct ifreq ifr;
int i, fd;
- fd = open("/dev/net/tun", O_RDWR);
+ fd = open("/dev/net/tun", O_RDWR | O_CLOEXEC);
if (fd < 0) {
i = -errno;
connman_error("Failed to open /dev/net/tun: %s",
diff --git a/src/resolver.c b/src/resolver.c
index 59defd49..4cc87ddc 100644
--- a/src/resolver.c
+++ b/src/resolver.c
@@ -121,7 +121,7 @@ static int resolvfile_export(void)
old_umask = umask(022);
- fd = open("/etc/resolv.conf", O_RDWR | O_CREAT,
+ fd = open("/etc/resolv.conf", O_RDWR | O_CREAT | O_CLOEXEC,
S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
if (fd < 0) {
err = -errno;
diff --git a/src/rfkill.c b/src/rfkill.c
index 17592da9..6ad82797 100644
--- a/src/rfkill.c
+++ b/src/rfkill.c
@@ -172,7 +172,7 @@ int __connman_rfkill_block(enum connman_service_type type, connman_bool_t block)
if (rfkill_type == NUM_RFKILL_TYPES)
return -EINVAL;
- fd = open("/dev/rfkill", O_RDWR);
+ fd = open("/dev/rfkill", O_RDWR | O_CLOEXEC);
if (fd < 0)
return fd;
@@ -197,7 +197,7 @@ int __connman_rfkill_init(void)
DBG("");
- fd = open("/dev/rfkill", O_RDWR);
+ fd = open("/dev/rfkill", O_RDWR | O_CLOEXEC);
if (fd < 0) {
connman_error("Failed to open RFKILL control device");
return -EIO;
diff --git a/src/stats.c b/src/stats.c
index df28eb4a..828c1ef8 100644
--- a/src/stats.c
+++ b/src/stats.c
@@ -335,7 +335,7 @@ static int stats_open(struct stats_file *file,
file->name = g_strdup(name);
- file->fd = TFR(open(file->name, O_RDWR | O_CREAT, 0644));
+ file->fd = TFR(open(file->name, O_RDWR | O_CREAT | O_CLOEXEC, 0644));
if (file->fd < 0) {
connman_error("open error %s for %s",
strerror(errno), file->name);
diff --git a/src/timezone.c b/src/timezone.c
index 1234622c..5b17c005 100644
--- a/src/timezone.c
+++ b/src/timezone.c
@@ -49,7 +49,7 @@ static char *read_key_file(const char *pathname, const char *key)
off_t ptrlen, keylen;
int fd;
- fd = open(pathname, O_RDONLY);
+ fd = open(pathname, O_RDONLY | O_CLOEXEC);
if (fd < 0)
return NULL;
@@ -121,7 +121,7 @@ static int compare_file(void *src_map, struct stat *src_st,
void *dst_map;
int fd, result;
- fd = open(pathname, O_RDONLY);
+ fd = open(pathname, O_RDONLY | O_CLOEXEC);
if (fd < 0)
return -1;
@@ -223,7 +223,7 @@ char *__connman_timezone_lookup(void)
DBG("sysconfig zone %s", zone);
- fd = open(ETC_LOCALTIME, O_RDONLY);
+ fd = open(ETC_LOCALTIME, O_RDONLY | O_CLOEXEC);
if (fd < 0) {
g_free(zone);
return NULL;
@@ -283,7 +283,7 @@ static int write_file(void *src_map, struct stat *src_st, const char *pathname)
unlink(pathname);
}
- fd = open(pathname, O_WRONLY | O_CREAT | O_TRUNC, 0644);
+ fd = open(pathname, O_WRONLY | O_CREAT | O_TRUNC | O_CLOEXEC, 0644);
if (fd < 0)
return -EIO;
@@ -307,7 +307,7 @@ int __connman_timezone_change(const char *zone)
snprintf(pathname, PATH_MAX, "%s/%s", USR_SHARE_ZONEINFO, zone);
- fd = open(pathname, O_RDONLY);
+ fd = open(pathname, O_RDONLY | O_CLOEXEC);
if (fd < 0)
return -EINVAL;