diff options
author | glebius <glebius@FreeBSD.org> | 2017-11-22 21:20:26 +0000 |
---|---|---|
committer | glebius <glebius@FreeBSD.org> | 2017-11-22 21:20:26 +0000 |
commit | e6fd038c9615284e316ae1bb5162d6a464dc2884 (patch) | |
tree | fa0faa4af93bd9d1592bd68282f91b412ffe60f4 | |
parent | 847073250e1149e3592c80d39ae3f4de6e8002e3 (diff) | |
download | FreeBSD-src-e6fd038c9615284e316ae1bb5162d6a464dc2884.zip FreeBSD-src-e6fd038c9615284e316ae1bb5162d6a464dc2884.tar.gz |
MFC r325558:
When parsing UDP messages skip optional hostname as described by
RFC 3164.
PR: 200933
Submitted by: maxim
Reported by: Konstantin Pavlov <thresh nginx.com>
-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 6e8fbc7..c4d51d7 100644 --- a/usr.sbin/syslogd/syslogd.c +++ b/usr.sbin/syslogd/syslogd.c @@ -972,7 +972,7 @@ static void logmsg(int pri, const char *msg, const char *from, int flags) { struct filed *f; - int i, fac, msglen, omask, prilev; + int i, j, fac, msglen, omask, prilev; const char *timestamp; char prog[NAME_MAX+1]; char buf[MAXLINE+1]; @@ -1019,6 +1019,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] == '[' || |