diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2012-12-15 19:56:33 +0100 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2012-12-20 18:52:56 +0100 |
commit | ebbbc4a86a070f88ed121bbb8d3e74fd00314183 (patch) | |
tree | 6383e086016d1b52bab346585377baf1f51a0e67 /src/util | |
parent | d73f8a53dd280da10640f51a85d8eef4ce8f8946 (diff) | |
download | sssd-ebbbc4a86a070f88ed121bbb8d3e74fd00314183.tar.gz sssd-ebbbc4a86a070f88ed121bbb8d3e74fd00314183.tar.xz sssd-ebbbc4a86a070f88ed121bbb8d3e74fd00314183.zip |
Set cloexec flag for log files
https://fedorahosted.org/sssd/ticket/1708
The services kept the fd to /var/log/sssd/sssd.log open. I don't think
there's any point in keeping the logfiles open after exec-ing for the
child, so I set the CLOEXEC flag.
Diffstat (limited to 'src/util')
-rw-r--r-- | src/util/debug.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/util/debug.c b/src/util/debug.c index e57656d7f..a027e701b 100644 --- a/src/util/debug.c +++ b/src/util/debug.c @@ -24,6 +24,7 @@ #include <stdio.h> #include <stdarg.h> #include <stdlib.h> +#include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> @@ -179,6 +180,8 @@ int open_debug_file_ex(const char *filename, FILE **filep) const char *log_file; mode_t old_umask; int ret; + int debug_fd; + int flags; if (filename == NULL) { log_file = debug_log_file; @@ -204,6 +207,14 @@ int open_debug_file_ex(const char *filename, FILE **filep) } umask(old_umask); + debug_fd = fileno(f); + if (debug_fd == -1) { + return EIO; + } + + flags = fcntl(debug_fd, F_GETFD, 0); + (void) fcntl(debug_fd, F_SETFD, flags | FD_CLOEXEC); + if (filep == NULL) { debug_file = f; } else { |