summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/common.h5
-rw-r--r--lib/libmtd.c10
2 files changed, 10 insertions, 5 deletions
diff --git a/include/common.h b/include/common.h
index c37660c..7ea282c 100644
--- a/include/common.h
+++ b/include/common.h
@@ -23,6 +23,7 @@
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
+#include <fcntl.h>
#include <errno.h>
#ifndef PROGRAM_NAME
@@ -42,6 +43,10 @@ extern "C" {
#define min(a, b) MIN(a, b) /* glue for linux kernel source */
#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
+#ifndef O_CLOEXEC
+#define O_CLOEXEC 0
+#endif
+
/* Verbose messages */
#define bareverbose(verbose, fmt, ...) do { \
if (verbose) \
diff --git a/lib/libmtd.c b/lib/libmtd.c
index 7fabd80..a651808 100644
--- a/lib/libmtd.c
+++ b/lib/libmtd.c
@@ -77,7 +77,7 @@ static int read_data(const char *file, void *buf, int buf_len)
{
int fd, rd, tmp, tmp1;
- fd = open(file, O_RDONLY);
+ fd = open(file, O_RDONLY | O_CLOEXEC);
if (fd == -1)
return -1;
@@ -201,7 +201,7 @@ static int read_hex_ll(const char *file, long long *value)
int fd, rd;
char buf[50];
- fd = open(file, O_RDONLY);
+ fd = open(file, O_RDONLY | O_CLOEXEC);
if (fd == -1)
return -1;
@@ -253,7 +253,7 @@ static int read_pos_ll(const char *file, long long *value)
int fd, rd;
char buf[50];
- fd = open(file, O_RDONLY);
+ fd = open(file, O_RDONLY | O_CLOEXEC);
if (fd == -1)
return -1;
@@ -538,7 +538,7 @@ static int sysfs_is_supported(struct libmtd *lib)
return 0;
sprintf(file, lib->mtd_name, num);
- fd = open(file, O_RDONLY);
+ fd = open(file, O_RDONLY | O_CLOEXEC);
if (fd == -1)
return 0;
@@ -1193,7 +1193,7 @@ int mtd_write_img(const struct mtd_dev_info *mtd, int fd, int eb, int offs,
return -1;
}
- in_fd = open(img_name, O_RDONLY);
+ in_fd = open(img_name, O_RDONLY | O_CLOEXEC);
if (in_fd == -1)
return sys_errmsg("cannot open \"%s\"", img_name);