krb5/krb5-1.14.1-log_file_permissions.patch

64 lines
2.7 KiB
Diff
Raw Normal View History

From 9914b93516bbce9b1123ed5f9f796b7028944892 Mon Sep 17 00:00:00 2001
From: Robbie Harwood <rharwood@redhat.com>
Date: Thu, 17 Dec 2015 13:31:39 -0500
Subject: [PATCH] Create KDC and kadmind log files with mode 0640
In krb5_klog_init(), use open() and fdopen() to open log files so that
we can specify a mode. Specify a mode which doesn't include the
group-write, other-read, or other-write bits even if the process umask
allows them.
[ghudson@mit.edu: wrote commit message, de-indented post-open setup
code]
[rharwood@redhat.com: backport not clean for some reason?]
ticket: 8344 (new)
---
src/lib/kadm5/logger.c | 21 ++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/src/lib/kadm5/logger.c b/src/lib/kadm5/logger.c
index 19c4355..f4a9387 100644
--- a/src/lib/kadm5/logger.c 2016-01-21 18:52:52.529544902 +0000
+++ b/src/lib/kadm5/logger.c 2016-01-21 18:57:22.923972419 +0000
@@ -354,7 +354,7 @@
const char *logging_profent[3];
const char *logging_defent[3];
char **logging_specs;
- int i, ngood;
+ int i, ngood, fd, append;
char *cp, *cp2;
char savec = '\0';
int error;
@@ -422,18 +422,21 @@
/*
* Check for append/overwrite, then open the file.
*/
- if (cp[4] == ':' || cp[4] == '=') {
- f = WRITABLEFOPEN(&cp[5], (cp[4] == ':') ? "a" : "w");
- if (f) {
- set_cloexec_file(f);
- log_control.log_entries[i].lfu_filep = f;
- log_control.log_entries[i].log_type = K_LOG_FILE;
- log_control.log_entries[i].lfu_fname = &cp[5];
- } else {
+ append = (cp[4] == ':') ? O_APPEND : 0;
+ if (append || cp[4] == '=') {
+ fd = open(&cp[5], O_CREAT | O_WRONLY | append,
+ S_IRUSR | S_IWUSR | S_IRGRP);
+ if (fd != -1)
+ f = fdopen(fd, append ? "a" : "w");
+ if (fd == -1 || f == NULL) {
fprintf(stderr,"Couldn't open log file %s: %s\n",
&cp[5], error_message(errno));
continue;
}
+ set_cloexec_file(f);
+ log_control.log_entries[i].lfu_filep = f;
+ log_control.log_entries[i].log_type = K_LOG_FILE;
+ log_control.log_entries[i].lfu_fname = &cp[5];
}
}
#ifdef HAVE_SYSLOG