diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2008-03-28 14:18:40 +0000 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2008-03-28 14:18:40 +0000 |
commit | f94cd60dac39fdedbf058b2c97dbf535e54faecf (patch) | |
tree | a66a2a4425783668b5b39e195d16c99223405478 /msg.c | |
parent | f574400bb5d18306f3929170d5f4c165ea2b24f9 (diff) | |
download | rsyslog-f94cd60dac39fdedbf058b2c97dbf535e54faecf.tar.gz rsyslog-f94cd60dac39fdedbf058b2c97dbf535e54faecf.tar.bz2 rsyslog-f94cd60dac39fdedbf058b2c97dbf535e54faecf.zip |
- bugfix: regular expressions inside property replacer did not work
properly
Diffstat (limited to 'msg.c')
-rw-r--r-- | msg.c | 11 |
1 files changed, 5 insertions, 6 deletions
@@ -1572,8 +1572,8 @@ char *MsgGetProp(msg_t *pMsg, struct templateEntry *pTpe, #ifdef FEATURE_REGEXP /* Variables necessary for regular expression matching */ - size_t nmatch = 2; - regmatch_t pmatch[2]; + size_t nmatch = 1; + regmatch_t pmatch[1]; #endif assert(pMsg != NULL); @@ -1807,8 +1807,7 @@ char *MsgGetProp(msg_t *pMsg, struct templateEntry *pTpe, dbgprintf("debug: String to match for regex is: %s\n", pRes); if(objUse(regexp, LM_REGEXP_FILENAME) == RS_RET_OK) { - if (0 != regexp.regexec(&pTpe->data.field.re, pRes, nmatch, - pmatch, 0)) { + if (0 != regexp.regexec(&pTpe->data.field.re, pRes, nmatch, pmatch, 0)) { /* we got no match! */ if (*pbMustBeFreed == 1) { free(pRes); @@ -1821,7 +1820,7 @@ char *MsgGetProp(msg_t *pMsg, struct templateEntry *pTpe, int iLenBuf; char *pB; - iLenBuf = pmatch[1].rm_eo - pmatch[1].rm_so; + iLenBuf = pmatch[0].rm_eo - pmatch[0].rm_so; pB = (char *) malloc((iLenBuf + 1) * sizeof(char)); if (pB == NULL) { @@ -1832,7 +1831,7 @@ char *MsgGetProp(msg_t *pMsg, struct templateEntry *pTpe, } /* Lets copy the matched substring to the buffer */ - memcpy(pB, pRes + pmatch[1].rm_so, iLenBuf); + memcpy(pB, pRes + pmatch[0].rm_so, iLenBuf); pB[iLenBuf] = '\0';/* terminate string, did not happen before */ if (*pbMustBeFreed == 1) |