summaryrefslogtreecommitdiffstats
path: root/runtime/msg.c
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2013-07-23 11:34:53 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2013-07-23 11:34:53 +0200
commit57a7a34748014586eec0f99b68c52f43979218f8 (patch)
tree8b3f011f733da1737108298b9a0a94152b355eea /runtime/msg.c
parent4ecd6bb9462f0fbaf4609f62d768847cc7e85f7e (diff)
downloadrsyslog-57a7a34748014586eec0f99b68c52f43979218f8.tar.gz
rsyslog-57a7a34748014586eec0f99b68c52f43979218f8.tar.bz2
rsyslog-57a7a34748014586eec0f99b68c52f43979218f8.zip
fix: global&local variables could not be accessed via RainerScript
also, global variable pool did receive extra variables that did not belong to global pool (problem in last milestone commit)
Diffstat (limited to 'runtime/msg.c')
-rw-r--r--runtime/msg.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/runtime/msg.c b/runtime/msg.c
index 87213bb7..5517dee8 100644
--- a/runtime/msg.c
+++ b/runtime/msg.c
@@ -551,6 +551,7 @@ propNameStrToID(uchar *pName, propid_t *pPropID)
} else if(!strcmp((char*) pName, "$uptime")) {
*pPropID = PROP_SYS_UPTIME;
} else {
+ DBGPRINTF("PROP_INVALID for name '%s'\n", pName);
*pPropID = PROP_INVALID;
iRet = RS_RET_VAR_NOT_FOUND;
}
@@ -3774,13 +3775,16 @@ msgGetMsgVarNew(msg_t *pThis, uchar *name)
propid_t propid;
unsigned short bMustBeFreed = 0;
es_str_t *estr;
+ es_str_t *propName;
ISOBJ_TYPE_assert(pThis, msg);
/* always call MsgGetProp() without a template specifier */
/* TODO: optimize propNameToID() call -- rgerhards, 2009-06-26 */
propNameStrToID(name, &propid);
- pszProp = (uchar*) MsgGetProp(pThis, NULL, propid, NULL, &propLen, &bMustBeFreed, NULL);
+ propName = es_newStrFromCStr((char*)name+1, ustrlen(name)-1); // TODO: optimize!
+ pszProp = (uchar*) MsgGetProp(pThis, NULL, propid, propName, &propLen, &bMustBeFreed, NULL);
+ es_deleteStr(propName);
estr = es_newStrFromCStr((char*)pszProp, propLen);
if(bMustBeFreed)
@@ -4183,7 +4187,7 @@ msgSetJSONFromVar(msg_t *pMsg, uchar *varname, struct var *v)
/* we always know strlen(varname) > 2 */
if(varname[1] == '!')
msgAddJSONObj(pMsg, varname+1, json, &pMsg->json);
- if(varname[1] == '.')
+ else if(varname[1] == '.')
msgAddJSONObj(pMsg, varname+1, json, &pMsg->localvars);
else /* global - '/' */
msgAddJSONObj(pMsg, varname+1, json, &global_var_root);