diff options
author | Gleb Smirnoff <glebius@FreeBSD.org> | 2017-11-08 16:45:53 +0000 |
---|---|---|
committer | Gleb Smirnoff <glebius@FreeBSD.org> | 2017-11-08 16:45:53 +0000 |
commit | b9a63e5c3aed0e1a5210ece2d37c0f5bbeb0d12d (patch) | |
tree | 59d7cef0978c266012d1c5e3195275af4f0bfa73 /usr.sbin/syslogd | |
parent | e1b7ce1fa047a59fa59d5917dde0d437a554896f (diff) | |
download | src-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.c | 15 |
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] == '[' || |