Rebase to 7.4.1
- regenerate patch 0 - drop patches merged upstream: 4..8 - add a dependency on the version of systemd which resolves rhbz#974132 - update option name in rsyslog.conf
This commit is contained in:
		
							parent
							
								
									9c292afab3
								
							
						
					
					
						commit
						103b4cae5f
					
				
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -16,3 +16,4 @@ rsyslog-4.6.3.tar.gz | |||||||
| /rsyslog-7.3.10.tar.gz | /rsyslog-7.3.10.tar.gz | ||||||
| /rsyslog-7.3.15-20130604git6e72fa6.tar.gz | /rsyslog-7.3.15-20130604git6e72fa6.tar.gz | ||||||
| /rsyslog-7.4.0.tar.gz | /rsyslog-7.4.0.tar.gz | ||||||
|  | /rsyslog-7.4.1.tar.gz | ||||||
|  | |||||||
| @ -1,35 +0,0 @@ | |||||||
| 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 |  | ||||||
| 
 |  | ||||||
| @ -1,87 +0,0 @@ | |||||||
| From ad9108eaf9164225f9149ed2b3b5c3184e1cb487 Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Tomas Heinrich <theinric@redhat.com> |  | ||||||
| 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 |  | ||||||
| 
 |  | ||||||
| @ -1,38 +0,0 @@ | |||||||
| 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 |  | ||||||
| 
 |  | ||||||
| @ -1,29 +0,0 @@ | |||||||
| 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 |  | ||||||
| 
 |  | ||||||
| @ -1,27 +0,0 @@ | |||||||
| From 489541d2a901c5fedd9cbbdc8ad0df557fdabddd Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Tomas Heinrich <theinric@redhat.com> |  | ||||||
| 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 |  | ||||||
| 
 |  | ||||||
							
								
								
									
										13
									
								
								rsyslog-7.4.1-sd-service.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								rsyslog-7.4.1-sd-service.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | |||||||
|  | diff -up rsyslog-7.4.1/rsyslog.service.in.orig rsyslog-7.4.1/rsyslog.service.in
 | ||||||
|  | --- rsyslog-7.4.1/rsyslog.service.in.orig	2013-06-17 15:28:54.430023493 +0200
 | ||||||
|  | +++ rsyslog-7.4.1/rsyslog.service.in	2013-06-17 15:30:05.874378084 +0200
 | ||||||
|  | @@ -4,7 +4,8 @@ Requires=syslog.socket
 | ||||||
|  |   | ||||||
|  |  [Service] | ||||||
|  |  Type=notify | ||||||
|  | -ExecStart=@sbindir@/rsyslogd -n
 | ||||||
|  | +EnvironmentFile=-/etc/sysconfig/rsyslog
 | ||||||
|  | +ExecStart=@sbindir@/rsyslogd -n $SYSLOGD_OPTIONS
 | ||||||
|  |  StandardOutput=null | ||||||
|  |   | ||||||
|  |  [Install] | ||||||
| @ -40,7 +40,7 @@ $IncludeConfig /etc/rsyslog.d/*.conf | |||||||
| $OmitLocalLogging on | $OmitLocalLogging on | ||||||
| 
 | 
 | ||||||
| # File to store the position in the journal | # File to store the position in the journal | ||||||
| $StateFile imjournal.state | $IMJournalStateFile imjournal.state | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| #### RULES #### | #### RULES #### | ||||||
|  | |||||||
							
								
								
									
										32
									
								
								rsyslog.spec
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								rsyslog.spec
									
									
									
									
									
								
							| @ -12,7 +12,7 @@ | |||||||
| 
 | 
 | ||||||
| Summary: Enhanced system logging and kernel message trapping daemon | Summary: Enhanced system logging and kernel message trapping daemon | ||||||
| Name: rsyslog | Name: rsyslog | ||||||
| Version: 7.4.0 | Version: 7.4.1 | ||||||
| Release: 1%{?dist} | Release: 1%{?dist} | ||||||
| License: (GPLv3+ and ASL 2.0) | License: (GPLv3+ and ASL 2.0) | ||||||
| Group: System Environment/Daemons | Group: System Environment/Daemons | ||||||
| @ -22,19 +22,12 @@ Source2: rsyslog.conf | |||||||
| Source3: rsyslog.sysconfig | Source3: rsyslog.sysconfig | ||||||
| Source4: rsyslog.log | Source4: rsyslog.log | ||||||
| # tweak the upstream service file to honour configuration from /etc/sysconfig/rsyslog | # tweak the upstream service file to honour configuration from /etc/sysconfig/rsyslog | ||||||
| Patch0: rsyslog-7.2.2-systemd.patch | Patch0: rsyslog-7.4.1-sd-service.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 | # 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 |  | ||||||
| Patch7: rsyslog-7.4.0-ratelimiter-reset.patch |  | ||||||
| Patch8: rsyslog-7.4.0-no-ste-file-segv.patch |  | ||||||
| 
 | 
 | ||||||
| BuildRequires: bison | BuildRequires: bison | ||||||
| BuildRequires: flex | BuildRequires: flex | ||||||
| @ -42,7 +35,8 @@ BuildRequires: json-c-devel | |||||||
| BuildRequires: libuuid-devel | BuildRequires: libuuid-devel | ||||||
| BuildRequires: pkgconfig | BuildRequires: pkgconfig | ||||||
| BuildRequires: python-docutils | BuildRequires: python-docutils | ||||||
| BuildRequires: systemd-devel >= 201 | # make sure systemd is in a version that isn't affected by rhbz#974132 | ||||||
|  | BuildRequires: systemd-devel >= 204-8 | ||||||
| BuildRequires: zlib-devel | BuildRequires: zlib-devel | ||||||
| 
 | 
 | ||||||
| Requires: logrotate >= 3.5.2 | Requires: logrotate >= 3.5.2 | ||||||
| @ -252,11 +246,6 @@ of source ports. | |||||||
| %patch1 -p1 | %patch1 -p1 | ||||||
| %patch2 -p1 | %patch2 -p1 | ||||||
| %patch3 -p1 | %patch3 -p1 | ||||||
| %patch4 -p1 |  | ||||||
| %patch5 -p1 |  | ||||||
| %patch6 -p1 |  | ||||||
| %patch7 -p1 |  | ||||||
| %patch8 -p1 |  | ||||||
| 
 | 
 | ||||||
| %build | %build | ||||||
| %ifarch sparc64 | %ifarch sparc64 | ||||||
| @ -334,7 +323,7 @@ install -p -m 644 %{SOURCE4} %{buildroot}%{_sysconfdir}/logrotate.d/syslog | |||||||
| # get rid of *.la | # get rid of *.la | ||||||
| rm -f %{buildroot}%{_libdir}/rsyslog/*.la | rm -f %{buildroot}%{_libdir}/rsyslog/*.la | ||||||
| # get rid of socket activation by default | # get rid of socket activation by default | ||||||
| sed -i '/^Sockets/s/^/;/;/^Alias/s/^/;/' %{buildroot}%{_unitdir}/rsyslog.service | sed -i '/^Alias/s/^/;/;/^Requires=syslog.socket/s/^/;/' %{buildroot}%{_unitdir}/rsyslog.service | ||||||
| 
 | 
 | ||||||
| %post | %post | ||||||
| for n in /var/log/{messages,secure,maillog,spooler} | for n in /var/log/{messages,secure,maillog,spooler} | ||||||
| @ -478,6 +467,17 @@ done | |||||||
| %{_libdir}/rsyslog/omudpspoof.so | %{_libdir}/rsyslog/omudpspoof.so | ||||||
| 
 | 
 | ||||||
| %changelog | %changelog | ||||||
|  | * Mon Jun 17 2013 Tomas Heinrich <theinric@redhat.com> 7.4.1-1 | ||||||
|  | - rebase to 7.4.1 | ||||||
|  |   this release adds code that somewhat mitigates damage in cases | ||||||
|  |   where large amounts of messages are received from systemd | ||||||
|  |   journal (see rhbz#974132) | ||||||
|  | - regenerate patch 0 | ||||||
|  | - drop patches merged upstream: 4..8 | ||||||
|  | - add a dependency on the version of systemd which resolves the bug | ||||||
|  |   mentioned above | ||||||
|  | - update option name in rsyslog.conf | ||||||
|  | 
 | ||||||
| * Tue Jun 12 2013 Tomas Heinrich <theinric@redhat.com> 7.4.0-1 | * Tue Jun 12 2013 Tomas Heinrich <theinric@redhat.com> 7.4.0-1 | ||||||
| - rebase to 7.4.0 | - rebase to 7.4.0 | ||||||
| - drop autoconf automake libtool from BuildRequires | - drop autoconf automake libtool from BuildRequires | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user