From d4f90ed37ecfae096dc6bf79f0ca0cefc5ff5756 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Fri, 23 May 2003 09:28:01 +0000 Subject: This patch from Vitezslav Batrla, is a cleaner fix for the problem with syslogd logging the '<' char. --- sysklogd/syslogd.c | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c index bafbaa35b..416521f3c 100644 --- a/sysklogd/syslogd.c +++ b/sysklogd/syslogd.c @@ -424,31 +424,21 @@ static int serveConnection(char *tmpbuf, int n_read) while (p < tmpbuf + n_read) { int pri = (LOG_USER | LOG_NOTICE); + int num_lt = 0; char line[MAXLINE + 1]; unsigned char c; char *q = line; - char *p1 = 0; - int oldpri; while ((c = *p) && q < &line[sizeof(line) - 1]) { - if (c == '<' && p1 == 0) { + if (c == '<' && num_lt == 0) { /* Parse the magic priority number. */ - p1 = p; - oldpri = pri; + num_lt++; pri = 0; while (isdigit(*(++p))) { pri = 10 * pri + (*p - '0'); } - if ( *p != '>') { - *q++ = c; - p=p1; - p1=0; - pri=oldpri; - } else { - if (pri & ~(LOG_FACMASK | LOG_PRIMASK)){ - pri = (LOG_USER | LOG_NOTICE); - } - } + if (pri & ~(LOG_FACMASK | LOG_PRIMASK)){ + pri = (LOG_USER | LOG_NOTICE); } else if (c == '\n') { *q++ = ' '; } else if (iscntrl(c) && (c < 0177)) { -- cgit v1.2.3