summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
author/C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org </C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org>2008-01-05 17:21:28 +0000
committer/C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org </C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org>2008-01-05 17:21:28 +0000
commit974d151ef8587d5ba3b6442eec500fefb18b4a9c (patch)
tree233326ecdc75955f0048c64e999018260c15293a /src
parent1102a95296e39f671efe51bb6bd9b30e5c14c91e (diff)
fix logfiles permissions, do not default to umask
Diffstat (limited to 'src')
-rw-r--r--src/log.c38
-rw-r--r--src/main.c4
2 files changed, 33 insertions, 9 deletions
diff --git a/src/log.c b/src/log.c
index 3e3dd12..176bdcd 100644
--- a/src/log.c
+++ b/src/log.c
@@ -19,28 +19,54 @@
*/
#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
#include <time.h>
#include <stdarg.h>
#include <string.h>
+#include <errno.h>
#include "buffer.h"
#include "conntrackd.h"
int init_log(void)
{
if (CONFIG(logfile)[0]) {
- STATE(log) = fopen(CONFIG(logfile), "a+");
+ int fd;
+
+ fd = open(CONFIG(logfile), O_CREAT | O_RDWR, 0600);
+ if (fd == -1) {
+ fprintf(stderr, "ERROR: can't open logfile `%s'."
+ "Reason: %s\n", CONFIG(logfile),
+ strerror(errno));
+ return -1;
+ }
+
+ STATE(log) = fdopen(fd, "a+");
if (STATE(log) == NULL) {
- fprintf(stderr, "can't open log file `%s'\n",
- CONFIG(logfile));
+ fprintf(stderr, "ERROR: can't open logfile `%s'."
+ "Reason: %s\n", CONFIG(logfile),
+ strerror(errno));
return -1;
}
}
if (CONFIG(stats).logfile[0]) {
- STATE(stats_log) = fopen(CONFIG(stats).logfile, "a+");
+ int fd;
+
+ fd = open(CONFIG(stats).logfile, O_CREAT | O_RDWR, 0600);
+ if (fd == -1) {
+ fprintf(stderr, "ERROR: can't open logfile `%s'."
+ "Reason: %s\n", CONFIG(stats).logfile,
+ strerror(errno));
+ return -1;
+ }
+
+ STATE(stats_log) = fdopen(fd, "a+");
if (STATE(stats_log) == NULL) {
- fprintf(stderr, "can't open log file `%s'\n",
- CONFIG(stats).logfile);
+ fprintf(stderr, "ERROR: can't open logfile `%s'."
+ "Reason: %s\n", CONFIG(stats).logfile,
+ strerror(errno));
return -1;
}
}
diff --git a/src/main.c b/src/main.c
index 3cf44ba..33235e9 100644
--- a/src/main.c
+++ b/src/main.c
@@ -246,10 +246,8 @@ int main(int argc, char *argv[])
/*
* Setting up logging
*/
- if (config_set && init_log() == -1) {
- fprintf(stderr, "can't open logfile `%s\n'", CONFIG(logfile));
+ if (config_set && init_log() == -1)
exit(EXIT_FAILURE);
- }
if (type == REQUEST) {
if (do_local_request(action, &conf.local, local_step) == -1) {