X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=libatalk%2Futil%2Flogger.c;h=014e41e958458c5872c72c8a0591c619de9ed96c;hb=22358cea1de24dbdfb2a6550c80f19afd3e808b3;hp=7f18279bde21af38ba1a61246057613df3f48617;hpb=8abc7715a8dbf196a76662ef92fbfe5d869de77d;p=netatalk.git diff --git a/libatalk/util/logger.c b/libatalk/util/logger.c index 7f18279b..014e41e9 100644 --- a/libatalk/util/logger.c +++ b/libatalk/util/logger.c @@ -26,8 +26,10 @@ Netatalk 2001 (c) #include #include #include +#include #include +#include #define LOGGER_C #include @@ -194,6 +196,7 @@ static void generate_message_details(char *message_details_buffer, templen = snprintf(ptr, len, " (D%d:", loglevel - 1); else templen = snprintf(ptr, len, " (%c:", arr_loglevel_chars[loglevel]); + if (templen == -1 || templen >= len) return; len -= templen; @@ -207,9 +210,9 @@ static void generate_message_details(char *message_details_buffer, len -= templen; ptr += templen; } - + strncat(ptr, "): ", len); - ptr[len] = 0; + ptr[len -1] = 0; } static int get_syslog_equivalent(enum loglevels loglevel) @@ -294,13 +297,21 @@ void log_setup(const char *filename, enum loglevels loglevel, enum logtypes logt /* Open log file as OPEN_LOGS_AS_UID*/ process_uid = geteuid(); - if (process_uid) - seteuid(OPEN_LOGS_AS_UID); + if (process_uid) { + if (seteuid(OPEN_LOGS_AS_UID) == -1) { + /* XXX failing silently */ + return; + } + } file_configs[logtype].fd = open( file_configs[logtype].filename, O_CREAT | O_WRONLY | O_APPEND, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); - if (process_uid) - seteuid(process_uid); + if (process_uid) { + if (seteuid(process_uid) == -1) { + LOG(log_error, logtype_logger, "can't seteuid back %s", strerror(errno)); + exit(EXITERR_SYS); + } + } /* Check for error opening/creating logfile */ if (-1 == file_configs[logtype].fd) { @@ -485,6 +496,8 @@ void setuplog(const char *logstr) ptr++; } filename = ptr; + if (*filename == 0) + filename = NULL; } /* finally call setuplog, filename can be NULL */