mirror of
https://git.proxmox.com/git/systemd
synced 2026-01-19 17:46:53 +00:00
Cherry-pick upstream fix to properly handle multiline syslog messages
Closes: #746351
This commit is contained in:
parent
548e024301
commit
b35f7581e0
2
debian/changelog
vendored
2
debian/changelog
vendored
@ -10,6 +10,8 @@ systemd (204-11) UNRELEASED; urgency=medium
|
||||
|
||||
[ Michael Biebl ]
|
||||
* Make no-patch-numbers the default for gbp-pq.
|
||||
* Cherry-pick upstream fix to properly handle multiline syslog messages.
|
||||
(Closes: #746351)
|
||||
|
||||
[ Michael Stapelberg ]
|
||||
* Clarify that “systemd” does not influence init whereas “systemd-sysv” does
|
||||
|
||||
75
debian/patches/journal-handle-multiline-syslog-messages.patch
vendored
Normal file
75
debian/patches/journal-handle-multiline-syslog-messages.patch
vendored
Normal file
@ -0,0 +1,75 @@
|
||||
From: Harald Hoyer <harald@redhat.com>
|
||||
Date: Thu, 1 Aug 2013 12:14:02 +0200
|
||||
Subject: journal: handle multiline syslog messages
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Since the journal can handle multiple lines just well natively,
|
||||
and rsyslog can be configured to handle them as well, there is no need
|
||||
to truncate messages from syslog() after the first newline.
|
||||
|
||||
Reproducer:
|
||||
|
||||
1. Add following four lines to /etc/rsyslog.conf
|
||||
|
||||
----------
|
||||
$EscapeControlCharactersOnReceive off
|
||||
$ActionFileDefaultTemplate RSYSLOG_SysklogdFileFormat
|
||||
$SpaceLFOnReceive on
|
||||
$DropTrailingLFOnReception off
|
||||
----------
|
||||
|
||||
3. Restart rsyslog
|
||||
# service rsyslog restart
|
||||
|
||||
4. Compile and run the following program
|
||||
|
||||
----------
|
||||
#include <stdio.h>
|
||||
#include <syslog.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
syslog(LOG_INFO, "aaa%caaa", '\n');
|
||||
return 0;
|
||||
}
|
||||
----------
|
||||
|
||||
Actual results:
|
||||
Below message appears in /var/log/messages.
|
||||
|
||||
----------
|
||||
Sep 7 19:19:39 localhost test2: aaa
|
||||
----------
|
||||
|
||||
Expected results:
|
||||
Below message, which worked prior to systemd-journald
|
||||
appears in /var/log/messages.
|
||||
|
||||
----------
|
||||
Sep 7 19:19:39 localhost test2: aaa aaa
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=855313
|
||||
---
|
||||
src/journal/journald-server.c | 7 +------
|
||||
1 file changed, 1 insertion(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
|
||||
index 01f23ce..5c607b6 100644
|
||||
--- a/src/journal/journald-server.c
|
||||
+++ b/src/journal/journald-server.c
|
||||
@@ -1142,12 +1142,7 @@ int process_event(Server *s, struct epoll_event *ev) {
|
||||
char *e;
|
||||
|
||||
if (n > 0 && n_fds == 0) {
|
||||
- e = memchr(s->buffer, '\n', n);
|
||||
- if (e)
|
||||
- *e = 0;
|
||||
- else
|
||||
- s->buffer[n] = 0;
|
||||
-
|
||||
+ s->buffer[n] = 0;
|
||||
server_process_syslog_message(s, strstrip(s->buffer), ucred, tv, label, label_len);
|
||||
} else if (n_fds > 0)
|
||||
log_warning("Got file descriptors via syslog socket. Ignoring.");
|
||||
1
debian/patches/series
vendored
1
debian/patches/series
vendored
@ -55,3 +55,4 @@ Add-targets-for-compatibility-with-Debian-insserv-sy.patch
|
||||
more-cd-aliases.patch
|
||||
rules-drivers-always-call-kmod-even-when-a-driver-is.patch
|
||||
Advertise-hibernation-only-if-there-s-enough-free-sw.patch
|
||||
journal-handle-multiline-syslog-messages.patch
|
||||
|
||||
Loading…
Reference in New Issue
Block a user