Add patches to resolve rhbz971471
This commit is contained in:
parent
e32e6e538e
commit
5b94587fc1
35
rsyslog-7.4.0-imjournal-segv.rhbz971471.patch
Normal file
35
rsyslog-7.4.0-imjournal-segv.rhbz971471.patch
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
From 0082647fa5e6849b83ab4c6b9ab2e8803245db14 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tomas Heinrich <theinric@redhat.com>
|
||||||
|
Date: Fri, 7 Jun 2013 01:15:10 +0200
|
||||||
|
Subject: [PATCH] bugfix: be more tolerant to malformed journal fields
|
||||||
|
|
||||||
|
This prevents a segfault when a malformed journal entry field doesn't
|
||||||
|
contain an equal sign. Should not ever happen but was actually
|
||||||
|
triggered by a real bug in systemd journal.
|
||||||
|
---
|
||||||
|
plugins/imjournal/imjournal.c | 9 ++++++++-
|
||||||
|
1 file changed, 8 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/plugins/imjournal/imjournal.c b/plugins/imjournal/imjournal.c
|
||||||
|
index ae29154..cce45b9 100755
|
||||||
|
--- a/plugins/imjournal/imjournal.c
|
||||||
|
+++ b/plugins/imjournal/imjournal.c
|
||||||
|
@@ -244,7 +244,14 @@ readjournal() {
|
||||||
|
SD_JOURNAL_FOREACH_DATA(j, get, l) {
|
||||||
|
/* locate equal sign, this is always present */
|
||||||
|
equal_sign = memchr(get, '=', l);
|
||||||
|
- assert (equal_sign != NULL);
|
||||||
|
+
|
||||||
|
+ /* ... but we know better than to trust the specs */
|
||||||
|
+ if (equal_sign == NULL) {
|
||||||
|
+ errmsg.LogError(0, RS_RET_ERR,"SD_JOURNAL_FOREACH_DATA()"
|
||||||
|
+ " returned a malformed field (has no '='): '%s'",
|
||||||
|
+ get);
|
||||||
|
+ continue; /* skip the entry */
|
||||||
|
+ }
|
||||||
|
|
||||||
|
/* get length of journal data prefix */
|
||||||
|
prefixlen = ((char *)equal_sign - (char *)get);
|
||||||
|
--
|
||||||
|
1.7.10.4
|
||||||
|
|
38
rsyslog-7.4.0-ratelimiter-loop.rhbz971471.patch
Normal file
38
rsyslog-7.4.0-ratelimiter-loop.rhbz971471.patch
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
From f11a873dc4e258c346765af9d5d23a1180493ee8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tomas Heinrich <theinric@redhat.com>
|
||||||
|
Date: Sat, 8 Jun 2013 23:27:48 +0200
|
||||||
|
Subject: [PATCH 2/2] bugfix: prevent an endless loop in the ratelimiter
|
||||||
|
|
||||||
|
If messages are being dropped because of ratelimiting, an internal
|
||||||
|
message is generated to inform about this fact. This should happen
|
||||||
|
only uppon the firs occurance but the counter that tracks the number
|
||||||
|
of dropped messages was incremented only after sending the message. If
|
||||||
|
the message itself gets ratelimited, an endless loop spins out of
|
||||||
|
control. Thanks to Jerry James for notifying about this.
|
||||||
|
---
|
||||||
|
runtime/ratelimit.c | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/runtime/ratelimit.c b/runtime/ratelimit.c
|
||||||
|
index d83da2d..ec24855 100644
|
||||||
|
--- a/runtime/ratelimit.c
|
||||||
|
+++ b/runtime/ratelimit.c
|
||||||
|
@@ -167,13 +167,13 @@ withinRatelimit(ratelimit_t *ratelimit, time_t tt)
|
||||||
|
ratelimit->done++;
|
||||||
|
ret = 1;
|
||||||
|
} else {
|
||||||
|
- if(ratelimit->missed == 0) {
|
||||||
|
+ ratelimit->missed++;
|
||||||
|
+ if(ratelimit->missed == 1) {
|
||||||
|
snprintf((char*)msgbuf, sizeof(msgbuf),
|
||||||
|
"%s: begin to drop messages due to rate-limiting",
|
||||||
|
ratelimit->name);
|
||||||
|
logmsgInternal(RS_RET_RATE_LIMITED, LOG_SYSLOG|LOG_INFO, msgbuf, 0);
|
||||||
|
}
|
||||||
|
- ratelimit->missed++;
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
1.7.10.4
|
||||||
|
|
29
rsyslog-7.4.0-ratelimiter-loop2.rhbz971471.patch
Normal file
29
rsyslog-7.4.0-ratelimiter-loop2.rhbz971471.patch
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
From 82db8e6fbba89bf486cc7e642e4f8daaa43852e8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tomas Heinrich <theinric@redhat.com>
|
||||||
|
Date: Mon, 10 Jun 2013 23:09:38 +0200
|
||||||
|
Subject: [PATCH] bugfix: prevent another endless loop in the ratelimiter
|
||||||
|
|
||||||
|
The message that reports how many messages were lost due to
|
||||||
|
ratelimiting was sent before reseting the state that led to it. If it
|
||||||
|
itself got ratelimited, this could lead to an endless loop.
|
||||||
|
---
|
||||||
|
runtime/ratelimit.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/runtime/ratelimit.c b/runtime/ratelimit.c
|
||||||
|
index ec24855..443a5fa 100644
|
||||||
|
--- a/runtime/ratelimit.c
|
||||||
|
+++ b/runtime/ratelimit.c
|
||||||
|
@@ -128,8 +128,8 @@ tellLostCnt(ratelimit_t *ratelimit)
|
||||||
|
snprintf((char*)msgbuf, sizeof(msgbuf),
|
||||||
|
"%s: %u messages lost due to rate-limiting",
|
||||||
|
ratelimit->name, ratelimit->missed);
|
||||||
|
- logmsgInternal(RS_RET_RATE_LIMITED, LOG_SYSLOG|LOG_INFO, msgbuf, 0);
|
||||||
|
ratelimit->missed = 0;
|
||||||
|
+ logmsgInternal(RS_RET_RATE_LIMITED, LOG_SYSLOG|LOG_INFO, msgbuf, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
1.7.10.4
|
||||||
|
|
13
rsyslog.spec
13
rsyslog.spec
@ -26,7 +26,13 @@ Patch0: rsyslog-7.2.2-systemd.patch
|
|||||||
Patch1: rsyslog-7.2.2-manpage-dbg-mode.patch
|
Patch1: rsyslog-7.2.2-manpage-dbg-mode.patch
|
||||||
# prevent modification of trusted properties (proposed upstream)
|
# prevent modification of trusted properties (proposed upstream)
|
||||||
Patch2: rsyslog-7.2.1-msg_c_nonoverwrite_merge.patch
|
Patch2: rsyslog-7.2.1-msg_c_nonoverwrite_merge.patch
|
||||||
|
# merged upstream
|
||||||
Patch3: rsyslog-7.3.15-imuxsock-warning.patch
|
Patch3: rsyslog-7.3.15-imuxsock-warning.patch
|
||||||
|
# merged upstream
|
||||||
|
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
|
||||||
|
|
||||||
BuildRequires: bison
|
BuildRequires: bison
|
||||||
BuildRequires: flex
|
BuildRequires: flex
|
||||||
@ -244,6 +250,9 @@ of source ports.
|
|||||||
%patch1 -p1
|
%patch1 -p1
|
||||||
%patch2 -p1
|
%patch2 -p1
|
||||||
%patch3 -p1
|
%patch3 -p1
|
||||||
|
%patch4 -p1
|
||||||
|
%patch5 -p1
|
||||||
|
%patch6 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%ifarch sparc64
|
%ifarch sparc64
|
||||||
@ -469,6 +478,10 @@ done
|
|||||||
- rebase to 7.4.0
|
- rebase to 7.4.0
|
||||||
- drop autoconf automake libtool from BuildRequires
|
- drop autoconf automake libtool from BuildRequires
|
||||||
- depends on systemd >= 201 because of the sd_journal_get_events() api
|
- depends on systemd >= 201 because of the sd_journal_get_events() api
|
||||||
|
- add a patch to prevent a segfault in imjournal caused by a bug in
|
||||||
|
systemd journal
|
||||||
|
- add a patch to prevent an endless loop in the ratelimiter
|
||||||
|
- add a patch to prevent another endless loop in the ratelimiter
|
||||||
|
|
||||||
* Tue Jun 04 2013 Tomas Heinrich <theinric@redhat.com> 7.3.15-1.20130604git6e72fa6
|
* Tue Jun 04 2013 Tomas Heinrich <theinric@redhat.com> 7.3.15-1.20130604git6e72fa6
|
||||||
- rebase to an upstream snapshot, effectively version 7.3.15
|
- rebase to an upstream snapshot, effectively version 7.3.15
|
||||||
|
Loading…
Reference in New Issue
Block a user