summaryrefslogtreecommitdiffstats
path: root/grammar
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2013-10-25 15:54:39 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2013-10-25 15:54:39 +0200
commit296d8158e6cd110a46cc6d58ceb0ebfcb0e94f45 (patch)
tree663802f1e0bd624951e62c32dbec2cca4485d2c4 /grammar
parentd732620f85168512d5bb7a8ecfd281b60da442c4 (diff)
parentbf95d5f034221fbc49904c30774f4ae269d4df68 (diff)
downloadrsyslog-296d8158e6cd110a46cc6d58ceb0ebfcb0e94f45.tar.gz
rsyslog-296d8158e6cd110a46cc6d58ceb0ebfcb0e94f45.tar.bz2
rsyslog-296d8158e6cd110a46cc6d58ceb0ebfcb0e94f45.zip
Merge branch 'v7-stable'
Diffstat (limited to 'grammar')
-rw-r--r--grammar/rainerscript.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/grammar/rainerscript.c b/grammar/rainerscript.c
index b73366c2..0f16a816 100644
--- a/grammar/rainerscript.c
+++ b/grammar/rainerscript.c
@@ -1370,7 +1370,7 @@ doFunc_re_extract(struct cnffunc *func, struct var *ret, void* usrptr)
str = (char*) var2CString(&r[0], &bMustFree);
matchnbr = (short) var2Number(&r[2], NULL);
submatchnbr = (size_t) var2Number(&r[3], NULL);
- if(submatchnbr > sizeof(pmatch)/sizeof(regmatch_t)) {
+ if(submatchnbr >= sizeof(pmatch)/sizeof(regmatch_t)) {
DBGPRINTF("re_extract() submatch %d is too large\n", submatchnbr);
bHadNoMatch = 1;
goto finalize_it;
@@ -1418,11 +1418,12 @@ doFunc_re_extract(struct cnffunc *func, struct var *ret, void* usrptr)
iLenBuf);
}
+finalize_it:
if(bMustFree) free(str);
if(r[0].datatype == 'S') es_deleteStr(r[0].d.estr);
if(r[2].datatype == 'S') es_deleteStr(r[2].d.estr);
if(r[3].datatype == 'S') es_deleteStr(r[3].d.estr);
-finalize_it:
+
if(bHadNoMatch) {
cnfexprEval(func->expr[4], &r[4], usrptr);
estr = var2String(&r[4], &bMustFree);