diff options
author | Andre Lorbach <alorbach@adiscon.com> | 2011-08-05 13:59:44 +0200 |
---|---|---|
committer | Andre Lorbach <alorbach@adiscon.com> | 2011-08-05 13:59:44 +0200 |
commit | 3229fbeb1e1183141cbf2508334a52f6a082c40b (patch) | |
tree | 4e57e2183f92c31f4574d4e80d08e70e21306f25 /runtime | |
parent | da52cbae520e747568162ad558bf01d40658c745 (diff) | |
download | rsyslog-3229fbeb1e1183141cbf2508334a52f6a082c40b.tar.gz rsyslog-3229fbeb1e1183141cbf2508334a52f6a082c40b.tar.xz rsyslog-3229fbeb1e1183141cbf2508334a52f6a082c40b.zip |
bugfix: potential misadressing in property replacer
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/msg.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/runtime/msg.c b/runtime/msg.c index 375b9861..22303adb 100644 --- a/runtime/msg.c +++ b/runtime/msg.c @@ -2314,7 +2314,12 @@ char *MsgGetProp(msg_t *pMsg, struct templateEntry *pTpe, } /* check for "." and ".." (note the parenthesis in the if condition!) */ - if((*pRes == '.') && (*(pRes + 1) == '\0' || (*(pRes + 1) == '.' && *(pRes + 2) == '\0'))) { + if(*pRes == '\0') { + if(*pbMustBeFreed == 1) + free(pRes); + pRes = "_"; + *pbMustBeFreed = 0; + } else if((*pRes == '.') && (*(pRes + 1) == '\0' || (*(pRes + 1) == '.' && *(pRes + 2) == '\0'))) { char *pTmp = pRes; if(*(pRes + 1) == '\0') @@ -2324,12 +2329,7 @@ char *MsgGetProp(msg_t *pMsg, struct templateEntry *pTpe, if(*pbMustBeFreed == 1) free(pTmp); *pbMustBeFreed = 0; - } else if(*pRes == '\0') { - if(*pbMustBeFreed == 1) - free(pRes); - pRes = "_"; - *pbMustBeFreed = 0; - } + } } /* Now drop last LF if present (pls note that this must not be done |