summaryrefslogtreecommitdiffstats
path: root/runtime/stringbuf.c
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2012-11-14 17:21:50 +0100
committerRainer Gerhards <rgerhards@adiscon.com>2012-11-14 17:21:50 +0100
commitc0f5dd3fbf877799ac8fec4d00b2f2c69014b413 (patch)
tree93ad366c70f9013bb7298dd2cceedac2c6a31925 /runtime/stringbuf.c
parent25a33416e9597087e16483859ecbdd6cdac2df64 (diff)
downloadrsyslog-c0f5dd3fbf877799ac8fec4d00b2f2c69014b413.tar.gz
rsyslog-c0f5dd3fbf877799ac8fec4d00b2f2c69014b413.tar.bz2
rsyslog-c0f5dd3fbf877799ac8fec4d00b2f2c69014b413.zip
bugfix: potential segfault at startup with property-based filter
If the property name was followed by a space before the comma, rsyslogd aborted on startup. Note that no segfault could happen if the initial startup went well (this was a problem with the config parser). closes: http://bugzilla.adiscon.com/show_bug.cgi?id=381
Diffstat (limited to 'runtime/stringbuf.c')
-rw-r--r--runtime/stringbuf.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/runtime/stringbuf.c b/runtime/stringbuf.c
index e7fd72c2..5bca009d 100644
--- a/runtime/stringbuf.c
+++ b/runtime/stringbuf.c
@@ -482,6 +482,8 @@ rsRetVal cstrTrimTrailingWhiteSpace(cstr_t *pThis)
register uchar *pC;
rsCHECKVALIDOBJECT(pThis, OIDrsCStr);
+ if(pThis->iStrLen == 0)
+ goto done; /* empty string -> nothing to trim ;) */
i = pThis->iStrLen;
pC = pThis->pBuf + i - 1;
while(i > 0 && isspace((int)*pC)) {
@@ -492,7 +494,7 @@ rsRetVal cstrTrimTrailingWhiteSpace(cstr_t *pThis)
pThis->iStrLen = i;
pThis->pBuf[pThis->iStrLen] = '0'; /* we always have this space */
- return RS_RET_OK;
+done: return RS_RET_OK;
}
/* compare two string objects - works like strcmp(), but operates