diff --git a/rsyslog-7.4.0-no-ste-file-segv.patch b/rsyslog-7.4.0-no-ste-file-segv.patch new file mode 100644 index 0000000..36668ed --- /dev/null +++ b/rsyslog-7.4.0-no-ste-file-segv.patch @@ -0,0 +1,87 @@ +From ad9108eaf9164225f9149ed2b3b5c3184e1cb487 Mon Sep 17 00:00:00 2001 +From: Tomas Heinrich +Date: Wed, 12 Jun 2013 13:38:34 +0200 +Subject: [PATCH] bugfix: prevent a segfault if state file is not defined + +--- + plugins/imjournal/imjournal.c | 43 +++++++++++++++++++++++++++++------------ + 1 file changed, 31 insertions(+), 12 deletions(-) + +diff --git a/plugins/imjournal/imjournal.c b/plugins/imjournal/imjournal.c +index cce45b9..26b385c 100755 +--- a/plugins/imjournal/imjournal.c ++++ b/plugins/imjournal/imjournal.c +@@ -434,12 +434,13 @@ finalize_it: + } + + +-BEGINrunInput +-CODESTARTrunInput +- /* this is an endless loop - it is terminated when the thread is +- * signalled to do so. This, however, is handled by the framework, +- * right into the sleep below. +- */ ++/* This function loads a journal cursor from the state file. ++ */ ++static rsRetVal ++loadJournalState() ++{ ++ DEFiRet; ++ + if (cs.stateFile[0] != '/') { + char *new_stateFile; + +@@ -479,6 +480,20 @@ CODESTARTrunInput + } + } + ++finalize_it: ++ RETiRet; ++} ++ ++BEGINrunInput ++CODESTARTrunInput ++ /* this is an endless loop - it is terminated when the thread is ++ * signalled to do so. This, however, is handled by the framework. ++ */ ++ ++ if (cs.stateFile) { ++ CHKiRet(loadJournalState()); ++ } ++ + while (glbl.GetGlobalInputTermState() == 0) { + int count = 0, r; + +@@ -499,11 +514,13 @@ CODESTARTrunInput + } + + CHKiRet(readjournal()); +- /* TODO: This could use some finer metric. */ +- count++; +- if (count == cs.iPersistStateInterval) { +- count = 0; +- persistJournalState(); ++ if (cs.stateFile) { /* can't persist without a state file */ ++ /* TODO: This could use some finer metric. */ ++ count++; ++ if (count == cs.iPersistStateInterval) { ++ count = 0; ++ persistJournalState(); ++ } + } + } + +@@ -552,7 +569,9 @@ ENDwillRun + /* close journal */ + BEGINafterRun + CODESTARTafterRun +- persistJournalState(); ++ if (cs.stateFile) { /* can't persist without a state file */ ++ persistJournalState(); ++ } + sd_journal_close(j); + ENDafterRun + +-- +1.7.10.4 + diff --git a/rsyslog-7.4.0-ratelimiter-reset.patch b/rsyslog-7.4.0-ratelimiter-reset.patch new file mode 100644 index 0000000..bc7bacb --- /dev/null +++ b/rsyslog-7.4.0-ratelimiter-reset.patch @@ -0,0 +1,27 @@ +From 489541d2a901c5fedd9cbbdc8ad0df557fdabddd Mon Sep 17 00:00:00 2001 +From: Tomas Heinrich +Date: Tue, 11 Jun 2013 16:27:37 +0200 +Subject: [PATCH] bugfix: prevent calling tellLostCnt() twice + +--- + runtime/ratelimit.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/runtime/ratelimit.c b/runtime/ratelimit.c +index ec24855..8f5bcef 100644 +--- a/runtime/ratelimit.c ++++ b/runtime/ratelimit.c +@@ -157,9 +157,9 @@ withinRatelimit(ratelimit_t *ratelimit, time_t tt) + + /* resume if we go out of out time window */ + if(tt > ratelimit->begin + ratelimit->interval) { +- tellLostCnt(ratelimit); + ratelimit->begin = 0; + ratelimit->done = 0; ++ tellLostCnt(ratelimit); + } + + /* do actual limit check */ +-- +1.7.10.4 + diff --git a/rsyslog.spec b/rsyslog.spec index 9c86b8f..5432520 100644 --- a/rsyslog.spec +++ b/rsyslog.spec @@ -33,6 +33,8 @@ Patch4: rsyslog-7.4.0-imjournal-segv.rhbz971471.patch # merged upstream Patch5: rsyslog-7.4.0-ratelimiter-loop.rhbz971471.patch Patch6: rsyslog-7.4.0-ratelimiter-loop2.rhbz971471.patch +Patch7: rsyslog-7.4.0-ratelimiter-reset.patch +Patch8: rsyslog-7.4.0-no-ste-file-segv.patch BuildRequires: bison BuildRequires: flex @@ -253,6 +255,8 @@ of source ports. %patch4 -p1 %patch5 -p1 %patch6 -p1 +%patch7 -p1 +%patch8 -p1 %build %ifarch sparc64 @@ -474,7 +478,7 @@ done %{_libdir}/rsyslog/omudpspoof.so %changelog -* Tue Jun 11 2013 Tomas Heinrich 7.4.0-1 +* Tue Jun 12 2013 Tomas Heinrich 7.4.0-1 - rebase to 7.4.0 - drop autoconf automake libtool from BuildRequires - depends on systemd >= 201 because of the sd_journal_get_events() api @@ -482,6 +486,8 @@ done systemd journal - add a patch to prevent an endless loop in the ratelimiter - add a patch to prevent another endless loop in the ratelimiter +- add a patch to prevent a segfault in imjournal for undefined state file +- add a patch to correctly reset state in the ratelimiter * Tue Jun 04 2013 Tomas Heinrich 7.3.15-1.20130604git6e72fa6 - rebase to an upstream snapshot, effectively version 7.3.15