summaryrefslogtreecommitdiffstats
path: root/runtime
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2010-03-01 12:52:25 +0100
committerRainer Gerhards <rgerhards@adiscon.com>2010-03-01 12:52:25 +0100
commiteb3afa800033a9479be0f9abf282befe2d478e3f (patch)
tree787981116a9876cbbd5e6cd2074275a714a3cc5d /runtime
parentc2c1d7120c3bcb8f12ad281798973f23010c63f9 (diff)
parentaf6c73439ecef2446c5fae0d774a8c093e2a3747 (diff)
downloadrsyslog-eb3afa800033a9479be0f9abf282befe2d478e3f.tar.gz
rsyslog-eb3afa800033a9479be0f9abf282befe2d478e3f.tar.xz
rsyslog-eb3afa800033a9479be0f9abf282befe2d478e3f.zip
Merge branch 'v4-stable' into tmp
Diffstat (limited to 'runtime')
-rw-r--r--runtime/ctok.c37
-rw-r--r--runtime/rule.c1
2 files changed, 31 insertions, 7 deletions
diff --git a/runtime/ctok.c b/runtime/ctok.c
index 6f5f0273..18ddaed2 100644
--- a/runtime/ctok.c
+++ b/runtime/ctok.c
@@ -87,11 +87,12 @@ ctokUngetCharFromStream(ctok_t *pThis, uchar __attribute__((unused)) c)
}
-/* get the next character from the input "stream" (currently just a in-memory
- * string...) -- rgerhards, 2008-02-19
+/* get the next character from the input "stream". Note that this version
+ * does NOT look for comment characters as end-of-stream, so it is suitable
+ * when building constant strings! -- rgerhards, 2010-03-01
*/
-static rsRetVal
-ctokGetCharFromStream(ctok_t *pThis, uchar *pc)
+static inline rsRetVal
+ctokGetCharFromStreamNoComment(ctok_t *pThis, uchar *pc)
{
DEFiRet;
@@ -99,7 +100,7 @@ ctokGetCharFromStream(ctok_t *pThis, uchar *pc)
ASSERT(pc != NULL);
/* end of string or begin of comment terminates the "stream" */
- if(*pThis->pp == '\0' || *pThis->pp == '#') {
+ if(*pThis->pp == '\0') {
ABORT_FINALIZE(RS_RET_EOS);
} else {
*pc = *pThis->pp;
@@ -111,6 +112,28 @@ finalize_it:
}
+/* get the next character from the input "stream" (currently just a in-memory
+ * string...) -- rgerhards, 2008-02-19
+ */
+static rsRetVal
+ctokGetCharFromStream(ctok_t *pThis, uchar *pc)
+{
+ DEFiRet;
+
+ ISOBJ_TYPE_assert(pThis, ctok);
+ ASSERT(pc != NULL);
+
+ CHKiRet(ctokGetCharFromStreamNoComment(pThis, pc));
+ /* begin of comment terminates the "stream"! */
+ if(*pc == '#') {
+ ABORT_FINALIZE(RS_RET_EOS);
+ }
+
+finalize_it:
+ RETiRet;
+}
+
+
/* skip whitespace in the input "stream".
* rgerhards, 2008-02-19
*/
@@ -302,7 +325,7 @@ ctokGetSimpStr(ctok_t *pThis, ctok_token_t *pToken)
pToken->tok = ctok_SIMPSTR;
CHKiRet(cstrConstruct(&pstrVal));
- CHKiRet(ctokGetCharFromStream(pThis, &c));
+ CHKiRet(ctokGetCharFromStreamNoComment(pThis, &c));
/* while we are in escape mode (had a backslash), no sequence
* terminates the loop. If outside, it is terminated by a single quote.
*/
@@ -317,7 +340,7 @@ ctokGetSimpStr(ctok_t *pThis, ctok_token_t *pToken)
CHKiRet(cstrAppendChar(pstrVal, c));
}
}
- CHKiRet(ctokGetCharFromStream(pThis, &c));
+ CHKiRet(ctokGetCharFromStreamNoComment(pThis, &c));
}
CHKiRet(cstrFinalize(pstrVal));
diff --git a/runtime/rule.c b/runtime/rule.c
index ae0da0d6..65ad071e 100644
--- a/runtime/rule.c
+++ b/runtime/rule.c
@@ -193,6 +193,7 @@ RUNLOG_VAR("%p", pRule->pCSProgNameComp);
if(pRule->f_filter_type == FILTER_PRI) {
/* skip messages that are incorrect priority */
+dbgprintf("testing filter, f_pmask %d\n", pRule->f_filterData.f_pmask[pMsg->iFacility]);
if ( (pRule->f_filterData.f_pmask[pMsg->iFacility] == TABLE_NOPRI) || \
((pRule->f_filterData.f_pmask[pMsg->iFacility] & (1<<pMsg->iSeverity)) == 0) )
bRet = 0;