summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorglebius <glebius@FreeBSD.org>2017-11-22 21:20:26 +0000
committerglebius <glebius@FreeBSD.org>2017-11-22 21:20:26 +0000
commite6fd038c9615284e316ae1bb5162d6a464dc2884 (patch)
treefa0faa4af93bd9d1592bd68282f91b412ffe60f4
parent847073250e1149e3592c80d39ae3f4de6e8002e3 (diff)
downloadFreeBSD-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.c15
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] == '[' ||
OpenPOWER on IntegriCloud