aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/syslogd
diff options
context:
space:
mode:
authorGleb Smirnoff <glebius@FreeBSD.org>2017-11-08 16:45:53 +0000
committerGleb Smirnoff <glebius@FreeBSD.org>2017-11-08 16:45:53 +0000
commitb9a63e5c3aed0e1a5210ece2d37c0f5bbeb0d12d (patch)
tree59d7cef0978c266012d1c5e3195275af4f0bfa73 /usr.sbin/syslogd
parente1b7ce1fa047a59fa59d5917dde0d437a554896f (diff)
downloadsrc-b9a63e5c3aed0e1a5210ece2d37c0f5bbeb0d12d.tar.gz
src-b9a63e5c3aed0e1a5210ece2d37c0f5bbeb0d12d.zip
When parsing UDP messages skip optional hostname as described by
RFC 3164. PR: 200933 Submitted by: maxim Reported by: Konstantin Pavlov <thresh nginx.com> MFC after: 2 weeks
Notes
Notes: svn path=/head/; revision=325558
Diffstat (limited to 'usr.sbin/syslogd')
-rw-r--r--usr.sbin/syslogd/syslogd.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/usr.sbin/syslogd/syslogd.c b/usr.sbin/syslogd/syslogd.c
index 86f9faaf9f5d..fbcd0861655d 100644
--- a/usr.sbin/syslogd/syslogd.c
+++ b/usr.sbin/syslogd/syslogd.c
@@ -1034,7 +1034,7 @@ static void
logmsg(int pri, const char *msg, const char *from, int flags)
{
struct filed *f;
- int i, fac, msglen, prilev;
+ int i, j, fac, msglen, prilev;
const char *timestamp;
char prog[NAME_MAX+1];
char buf[MAXLINE+1];
@@ -1077,6 +1077,19 @@ logmsg(int pri, const char *msg, const char *from, int flags)
prilev = LOG_PRI(pri);
+ /* skip hostname, see RFC 3164 */
+ for (i = 0, j = 0; i < NAME_MAX; i++) {
+ if (isspace(msg[i])) {
+ j = i + 1;
+ }
+ if (msg[i] == ':')
+ break;
+ }
+ if (j <= msglen) {
+ msg += j;
+ msglen -= j;
+ }
+
/* extract program name */
for (i = 0; i < NAME_MAX; i++) {
if (!isprint(msg[i]) || msg[i] == ':' || msg[i] == '[' ||