summaryrefslogtreecommitdiffstats
path: root/ulogd/extensions/ulogd_OPRINT.c
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>2007-05-28 12:46:38 +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>2007-05-28 12:46:38 +0000
commitad922a36f5c5f92568055062b88d569928a27834 (patch)
tree172597ad35bc45f5b5d82244c70e6aeea69ddfcf /ulogd/extensions/ulogd_OPRINT.c
parenta04029553ce3bfbae039becebaef04a0ea0ae1ab (diff)
Patches from Marius Tomaschewski <mt@suse.de>:
- Fixed sigterm_handler to close logfile and then call output_plugin->fini. The output_plugin->fini function may still use the logger (e.g. sqlite3 does), what causes a SEGV (really happens in case of sqlite3 db init error - as far as I remember) - Changed sighup_handler_print to not to call exit(2) on reopen failure, but try to reopen and fallback to continue using old descriptor on failure. - Fixed mac output in ulogd_BASE.c - Added explicit termination of the hostname buffer: "[...] if namelen is an insufficient length to hold the host name, then the returned name is truncated and it is unspecified whether the returned name is null-terminated. [...]" as SUSv2 specifies. - Added to print "\n" after ULOGD_RET_NONE type as well after an unspecified type. See example above at extensions/ulogd_BASE.c. - Fixed to set the '\0' at the end and not behind the buffer.
Diffstat (limited to 'ulogd/extensions/ulogd_OPRINT.c')
-rw-r--r--ulogd/extensions/ulogd_OPRINT.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/ulogd/extensions/ulogd_OPRINT.c b/ulogd/extensions/ulogd_OPRINT.c
index 701b645..ed34382 100644
--- a/ulogd/extensions/ulogd_OPRINT.c
+++ b/ulogd/extensions/ulogd_OPRINT.c
@@ -72,7 +72,10 @@ static int _output_print(ulog_iret_t *res)
HIPQUAD(ret->value.ui32));
break;
case ULOGD_RET_NONE:
- fprintf(of, "<none>");
+ fprintf(of, "<none>\n");
+ break;
+ default:
+ fprintf(of, "\n");
break;
}
}
@@ -88,16 +91,18 @@ static config_entry_t outf_ce = {
static void sighup_handler_print(int signal)
{
+ FILE *old=of;
switch (signal) {
case SIGHUP:
ulogd_log(ULOGD_NOTICE, "PKTLOG: reopening logfile\n");
- fclose(of);
of = fopen(outf_ce.u.string, "a");
if (!of) {
ulogd_log(ULOGD_FATAL, "can't open PKTLOG: %s\n",
strerror(errno));
- exit(2);
+ of=old;
+ } else {
+ fclose(old);
}
break;
default: