From 6023de67c84e531939b77454783835c65f694bff Mon Sep 17 00:00:00 2001 From: "/C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org" Date: Mon, 7 Jan 2008 16:32:10 +0000 Subject: fix segfaul in the exit path for the statistics mode (introduced in r7175) --- src/log.c | 3 ++- src/run.c | 2 +- src/stats-mode.c | 8 +++++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/log.c b/src/log.c index 176bdcd..51109b6 100644 --- a/src/log.c +++ b/src/log.c @@ -171,6 +171,7 @@ void close_log(void) if (STATE(stats_log) != NULL) fclose(STATE(stats_log)); - if (CONFIG(syslog_facility) != -1) + if (CONFIG(syslog_facility) != -1 || + CONFIG(stats).syslog_facility != -1) closelog(); } diff --git a/src/run.c b/src/run.c index ebf4b3c..609b454 100644 --- a/src/run.c +++ b/src/run.c @@ -41,7 +41,7 @@ void killer(int foo) destroy_alarm_scheduler(); unlink(CONFIG(lockfile)); dlog(STATE(log), LOG_NOTICE, "---- shutdown received ----"); - close_log(STATE(log)); + close_log(); sigprocmask(SIG_UNBLOCK, &STATE(block), NULL); diff --git a/src/stats-mode.c b/src/stats-mode.c index 05a1b2c..ee9b3fd 100644 --- a/src/stats-mode.c +++ b/src/stats-mode.c @@ -60,9 +60,11 @@ static int init_stats(void) static void kill_stats() { cache_destroy(STATE_STATS(cache)); - buffer_flush(STATE_STATS(buffer_log), - dlog_buffered_ct_flush, - STATE(stats_log)); + /* flush the buffer before exiting */ + if (STATE(stats_log) != NULL) + buffer_flush(STATE(stats_log), + dlog_buffered_ct_flush, + STATE(stats_log)); } /* handler for requests coming via UNIX socket */ -- cgit v1.2.3