Skip to content
Snippets Groups Projects
Commit 6bc33d63 authored by Derek Foreman's avatar Derek Foreman Committed by Bryce Harrington
Browse files

log: Open log file CLOEXEC so child processes don't get the fd

parent 4a8a3a1c
No related branches found
No related tags found
No related merge requests found
......@@ -36,8 +36,8 @@
#include "os-compatibility.h"
static int
set_cloexec_or_close(int fd)
int
os_fd_set_cloexec(int fd)
{
long flags;
......@@ -46,16 +46,22 @@ set_cloexec_or_close(int fd)
flags = fcntl(fd, F_GETFD);
if (flags == -1)
goto err;
return -1;
if (fcntl(fd, F_SETFD, flags | FD_CLOEXEC) == -1)
goto err;
return -1;
return fd;
return 0;
}
err:
close(fd);
return -1;
static int
set_cloexec_or_close(int fd)
{
if (os_fd_set_cloexec(fd) != 0) {
close(fd);
return -1;
}
return fd;
}
int
......
......@@ -40,6 +40,9 @@ backtrace(void **buffer, int size)
}
#endif
int
os_fd_set_cloexec(int fd);
int
os_socketpair_cloexec(int domain, int type, int protocol, int *sv);
......
......@@ -36,6 +36,8 @@
#include "compositor.h"
#include "os-compatibility.h"
static FILE *weston_logfile = NULL;
static int cached_tm_mday = -1;
......@@ -77,8 +79,11 @@ weston_log_file_open(const char *filename)
{
wl_log_set_handler_server(custom_handler);
if (filename != NULL)
if (filename != NULL) {
weston_logfile = fopen(filename, "a");
if (weston_logfile)
os_fd_set_cloexec(fileno(weston_logfile));
}
if (weston_logfile == NULL)
weston_logfile = stderr;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment