This patch from Vitezslav Batrla, is a cleaner fix for the

problem with syslogd logging the '<' char.
This commit is contained in:
Eric Andersen 2003-05-23 09:28:01 +00:00
parent 787ff55a69
commit d4f90ed37e

View File

@ -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)) {