summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2012-09-18 17:56:52 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2012-09-18 17:56:52 +0200
commitd88b0e0baf77427c32aa6212579fc9e33359b9ce (patch)
tree583aba1a3abee1e9b35034095e130a11e85c2cd2
parent28778f398dc6537e09e7236aebb245fb8c9bd311 (diff)
downloadrsyslog-d88b0e0baf77427c32aa6212579fc9e33359b9ce.tar.gz
rsyslog-d88b0e0baf77427c32aa6212579fc9e33359b9ce.tar.xz
rsyslog-d88b0e0baf77427c32aa6212579fc9e33359b9ce.zip
subtree template parameter requires variable name, not CEE path
This was changed to keep things in rsyslog.conf consistent. Can also come handy if at some time we want to have a global (disjunct) CEE path.
-rw-r--r--template.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/template.c b/template.c
index 95c1dc2b..3189044d 100644
--- a/template.c
+++ b/template.c
@@ -1708,7 +1708,18 @@ tplProcessCnf(struct cnfobj *o)
} else if(!strcmp(pblk.descr[i].name, "string")) {
tplStr = (uchar*) es_str2cstr(pvals[i].val.d.estr, NULL);
} else if(!strcmp(pblk.descr[i].name, "subtree")) {
- subtree = es_strdup(pvals[i].val.d.estr);
+ uchar *st_str = es_getBufAddr(pvals[i].val.d.estr);
+ if(st_str[0] != '$' || st_str[1] != '!') {
+ char *cstr = es_str2cstr(pvals[i].val.d.estr, NULL);
+ errmsg.LogError(0, RS_RET_ERR, "invalid subtree "
+ "parameter, variable must start with '$!' but "
+ "var name is '%s'", cstr);
+ free(cstr);
+ free(name); /* overall assigned */
+ ABORT_FINALIZE(RS_RET_ERR);
+ } else {
+ subtree = es_strdup(pvals[i].val.d.estr);
+ }
} else if(!strcmp(pblk.descr[i].name, "plugin")) {
plugin = (uchar*) es_str2cstr(pvals[i].val.d.estr, NULL);
} else if(!strcmp(pblk.descr[i].name, "option.stdsql")) {
@@ -1820,7 +1831,7 @@ tplProcessCnf(struct cnfobj *o)
break;
case T_LIST: createListTpl(pTpl, o);
break;
- case T_SUBTREE: pTpl->subtree = subtree;
+ case T_SUBTREE: pTpl->subtree = subtree + 1;
break;
}