From 3c14ba1caebf0bada6c132dd52a59246ba07d769 Mon Sep 17 00:00:00 2001 From: Falk Werner Date: Thu, 12 Nov 2020 11:47:09 +0100 Subject: [PATCH] fix: ensure that syslog ident is valid while logger is active --- src/webfused/log/syslog_logger.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/webfused/log/syslog_logger.c b/src/webfused/log/syslog_logger.c index 0f66ad4..5b234fe 100644 --- a/src/webfused/log/syslog_logger.c +++ b/src/webfused/log/syslog_logger.c @@ -6,6 +6,8 @@ #include #include +#include +#include #include static int @@ -23,7 +25,7 @@ wfd_syslog_logger_to_priority( } } -static void +static void wfd_syslog_logger_log( void * user_data, int level, @@ -41,6 +43,7 @@ wfd_syslog_logger_close( void * user_data) { closelog(); + free(user_data); } struct wfd_syslog_facility @@ -97,7 +100,7 @@ wfd_syslog_logger_init( int level, struct wfd_settings * settings) { - char const * ident = wfd_settings_get_string_or_default(settings, "ident", "webfused"); + char * ident = strdup(wfd_settings_get_string_or_default(settings, "ident", "webfused")); char const * facility_str = wfd_settings_get_string_or_default(settings, "facility", "daemon"); bool log_pid = wfd_settings_get_bool(settings, "log_pid"); @@ -106,17 +109,17 @@ wfd_syslog_logger_init( if (result) { int options = (log_pid) ? LOG_PID : 0; - wfd_logger_init(level, - &wfd_syslog_logger_log, - &wfd_syslog_logger_close, - NULL); + wfd_logger_init(level, + &wfd_syslog_logger_log, + &wfd_syslog_logger_close, + ident); openlog(ident, options, facility); } else { - WFD_ERROR("failed to init syslog logger: invalid log facility: \'%s\'", facility_str); + WFD_ERROR("failed to init syslog logger: invalid log facility: \'%s\'", facility_str); } return result; -} \ No newline at end of file +}