summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2009-10-09 15:37:34 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2009-10-09 15:37:34 +0200
commit98d1ed504ec001728955a5bcd7916f64cd85f39f (patch)
tree51d76c3fcbb71911bf2c9ce58d3e9baf60154c5f /tools
parent4c14bfdc2311b04786d585912795bc08e2498d3b (diff)
downloadrsyslog-98d1ed504ec001728955a5bcd7916f64cd85f39f.tar.gz
rsyslog-98d1ed504ec001728955a5bcd7916f64cd85f39f.tar.xz
rsyslog-98d1ed504ec001728955a5bcd7916f64cd85f39f.zip
bugfix: potential segfault on messages with empty MSG part.
This was a recently introduced regression.
Diffstat (limited to 'tools')
-rw-r--r--tools/syslogd.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/tools/syslogd.c b/tools/syslogd.c
index 3350804d..895ac5d6 100644
--- a/tools/syslogd.c
+++ b/tools/syslogd.c
@@ -1200,8 +1200,6 @@ int parseLegacySyslogMsg(msg_t *pMsg, int flags)
assert(pMsg != NULL);
assert(pMsg->pszRawMsg != NULL);
lenMsg = pMsg->iLenRawMsg - (pMsg->offAfterPRI + 1);
-RUNLOG_VAR("%d", pMsg->offAfterPRI);
-RUNLOG_VAR("%d", lenMsg);
p2parse = pMsg->pszRawMsg + pMsg->offAfterPRI; /* point to start of text, after PRI */
/* Check to see if msg contains a timestamp. We start by assuming
@@ -1257,16 +1255,16 @@ RUNLOG_VAR("%d", lenMsg);
bTAGCharDetected = 0;
if(lenMsg > 0 && flags & PARSE_HOSTNAME) {
i = 0;
- while(lenMsg > 0 && (isalnum(p2parse[i]) || p2parse[i] == '.' || p2parse[i] == '.'
+ while(i < lenMsg && (isalnum(p2parse[i]) || p2parse[i] == '.' || p2parse[i] == '.'
|| p2parse[i] == '_' || p2parse[i] == '-') && i < CONF_TAG_MAXSIZE) {
bufParseHOSTNAME[i] = p2parse[i];
++i;
- --lenMsg;
}
if(i > 0 && p2parse[i] == ' ' && isalnum(p2parse[i-1])) {
/* we got a hostname! */
p2parse += i + 1; /* "eat" it (including SP delimiter) */
+ lenMsg -= i + 1;
bufParseHOSTNAME[i] = '\0';
MsgSetHOSTNAME(pMsg, bufParseHOSTNAME, i);
}