summaryrefslogtreecommitdiff
path: root/scheduler/log.c
diff options
context:
space:
mode:
authormsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>2008-09-10 22:30:50 +0000
committermsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>2008-09-10 22:30:50 +0000
commit49d8745278805ede5c41bae3c299e14ba40457bf (patch)
tree875bed78b8cff9d470bff3bf1feffcd8fdb4e869 /scheduler/log.c
parentc5571a1d68de6e20e127c9745aa7a4dbf4e4474d (diff)
downloadcups-49d8745278805ede5c41bae3c299e14ba40457bf.tar.gz
Merge changes from CUPS 1.4svn-r7932.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@957 a1ca3aef-8c08-0410-bb20-df032aa958be
Diffstat (limited to 'scheduler/log.c')
-rw-r--r--scheduler/log.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/scheduler/log.c b/scheduler/log.c
index dc2e23297..a0123bf8a 100644
--- a/scheduler/log.c
+++ b/scheduler/log.c
@@ -807,7 +807,20 @@ check_log_file(cups_file_t **lf, /* IO - Log file */
if (!strncmp(filename, CUPS_LOGDIR, strlen(CUPS_LOGDIR)))
{
- cupsdCheckPermissions(CUPS_LOGDIR, NULL, 0755, RunUser, Group, 1, -1);
+ /*
+ * Try updating the permissions of the containing log directory, using
+ * the log file permissions as a basis...
+ */
+
+ int log_dir_perm = 0300 | LogFilePerm;
+ /* LogFilePerm + owner write/search */
+ if (log_dir_perm & 0040)
+ log_dir_perm |= 0010; /* Add group search */
+ if (log_dir_perm & 0004)
+ log_dir_perm |= 0001; /* Add other search */
+
+ cupsdCheckPermissions(CUPS_LOGDIR, NULL, log_dir_perm, RunUser, Group,
+ 1, -1);
*lf = cupsFileOpen(filename, "a");
}
@@ -816,6 +829,10 @@ check_log_file(cups_file_t **lf, /* IO - Log file */
{
syslog(LOG_ERR, "Unable to open log file \"%s\" - %s", filename,
strerror(errno));
+
+ if (FatalErrors & CUPSD_FATAL_LOG)
+ cupsdEndProcess(getpid(), 0);
+
return (0);
}
}
@@ -855,6 +872,9 @@ check_log_file(cups_file_t **lf, /* IO - Log file */
syslog(LOG_ERR, "Unable to open log file \"%s\" - %s", filename,
strerror(errno));
+ if (FatalErrors & CUPSD_FATAL_LOG)
+ cupsdEndProcess(getpid(), 0);
+
return (0);
}