memcpy(p, "BOOTCHART=", 10);
- f = open(file, O_RDONLY);
+ f = open(file, O_RDONLY|O_CLOEXEC);
if (f < 0) {
log_error("Failed to read bootchart data: %m");
return;
t = time(NULL);
strftime(datestr, sizeof(datestr), "%Y%m%d-%H%M", localtime(&t));
snprintf(output_file, PATH_MAX, "%s/bootchart-%s.svg", arg_output_path, datestr);
- of = fopen(output_file, "w");
+ of = fopen(output_file, "we");
}
if (sysfd < 0)
- sysfd = open("/sys", O_RDONLY);
+ sysfd = open("/sys", O_RDONLY|O_CLOEXEC);
if (!build)
parse_env_file("/etc/os-release", NEWLINE,
t = time(NULL);
strftime(datestr, sizeof(datestr), "%Y%m%d-%H%M", localtime(&t));
snprintf(output_file, PATH_MAX, "%s/bootchart-%s.svg", arg_output_path, datestr);
- of = fopen(output_file, "w");
+ of = fopen(output_file, "we");
}
if (!of) {
char str[32];
double uptime;
- f = fopen("/proc/uptime", "r");
+ f = fopen("/proc/uptime", "re");
if (!f)
return;
return -errno;
}
- console = fopen("/dev/console", "w");
+ console = fopen("/dev/console", "we");
if (!console)
return -ENOMEM;
assert(out_fd > 0);
assert(fn);
- f = fopen(fn, "r");
+ f = fopen(fn, "re");
if (!f)
return -errno;
assert(size);
assert(used);
- f = fopen("/proc/swaps", "r");
+ f = fopen("/proc/swaps", "re");
if (!f) {
log_full(errno == ENOENT ? LOG_DEBUG : LOG_WARNING,
"Failed to retrieve open /proc/swaps: %m");
old = get_prev_orientation(dev);
- fd = open(devpath, O_RDONLY);
+ fd = open(devpath, O_RDONLY|O_CLOEXEC);
if (fd < 0)
return;
goto exit;
}
- fd = open(node, O_RDONLY|O_NONBLOCK);
+ fd = open(node, O_RDONLY|O_NONBLOCK|O_CLOEXEC);
if (fd < 0) {
log_error("unable to open '%s'", node);
rc = 1;
for (cnt = 20; cnt > 0; cnt--) {
struct timespec duration;
- fd = open(node, O_RDONLY|O_NONBLOCK|(is_mounted(node) ? 0 : O_EXCL));
+ fd = open(node, O_RDONLY|O_NONBLOCK|O_CLOEXEC|(is_mounted(node) ? 0 : O_EXCL));
if (fd >= 0 || errno != EBUSY)
break;
duration.tv_sec = 0;
snprintf(buf, sizeof(buf), "%s/%s", dir, filename);
- fd = open(buf,O_RDWR|O_CREAT, S_IRUSR|S_IWUSR);
+ fd = open(buf,O_RDWR|O_CREAT|O_CLOEXEC, S_IRUSR|S_IWUSR);
if (fd < 0)
fprintf(stderr, "Cannot open %s: %m\n", buf);
return 1;
}
- mtd_fd = open(argv[1], O_RDONLY);
+ mtd_fd = open(argv[1], O_RDONLY|O_CLOEXEC);
if (mtd_fd == -1) {
perror("open");
exit(-1);
struct stat statbuf;
int err = 0;
- fd = open(devname, O_RDONLY | O_NONBLOCK);
+ fd = open(devname, O_RDONLY | O_NONBLOCK | O_CLOEXEC);
if (fd < 0) {
log_debug("scsi_id: cannot open %s: %m", devname);
return 1;
for (cnt = 20; cnt > 0; cnt--) {
struct timespec duration;
- fd = open(devname, O_RDONLY | O_NONBLOCK);
+ fd = open(devname, O_RDONLY | O_NONBLOCK | O_CLOEXEC);
if (fd >= 0 || errno != EBUSY)
break;
duration.tv_sec = 0;
static int builtin_btrfs(struct udev_device *dev, int argc, char *argv[], bool test)
{
struct btrfs_ioctl_vol_args args;
- int fd;
+ _cleanup_close_ int fd = -1;
int err;
if (argc != 3 || !streq(argv[1], "ready"))
return EXIT_FAILURE;
- fd = open("/dev/btrfs-control", O_RDWR);
+ fd = open("/dev/btrfs-control", O_RDWR|O_CLOEXEC);
if (fd < 0)
return EXIT_FAILURE;
strscpy(args.name, sizeof(args.name), argv[2]);
err = ioctl(fd, BTRFS_IOC_DEVICES_READY, &args);
- close(fd);
if (err < 0)
return EXIT_FAILURE;
if (dry_run)
continue;
strscpyl(filename, sizeof(filename), udev_list_entry_get_name(entry), "/uevent", NULL);
- fd = open(filename, O_WRONLY);
+ fd = open(filename, O_WRONLY|O_CLOEXEC);
if (fd < 0)
continue;
if (write(fd, action, strlen(action)) < 0)
log_debug("device %s closed, synthesising 'change'", udev_device_get_devnode(dev));
strscpyl(filename, sizeof(filename), udev_device_get_syspath(dev), "/uevent", NULL);
- fd = open(filename, O_WRONLY);
+ fd = open(filename, O_WRONLY|O_CLOEXEC);
if (fd >= 0) {
if (write(fd, "change", 6) < 0)
log_debug("error writing uevent: %m");