diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2013-07-23 11:34:53 +0200 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2013-07-23 11:34:53 +0200 |
commit | 57a7a34748014586eec0f99b68c52f43979218f8 (patch) | |
tree | 8b3f011f733da1737108298b9a0a94152b355eea /runtime/msg.c | |
parent | 4ecd6bb9462f0fbaf4609f62d768847cc7e85f7e (diff) | |
download | rsyslog-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.c | 8 |
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); |