summaryrefslogtreecommitdiffstats
path: root/grammar
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2012-09-25 17:37:35 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2012-09-25 17:37:35 +0200
commitc6cb5bf4aa75b79bdc3cd1af38788a32bd2c8e1a (patch)
tree9d69b59c2d356e7c0a9ba95eac1b3e0e29582164 /grammar
parenteb18d9b23248732da3cba2b170ddc271ae7ec346 (diff)
downloadrsyslog-c6cb5bf4aa75b79bdc3cd1af38788a32bd2c8e1a.tar.gz
rsyslog-c6cb5bf4aa75b79bdc3cd1af38788a32bd2c8e1a.tar.xz
rsyslog-c6cb5bf4aa75b79bdc3cd1af38788a32bd2c8e1a.zip
fix invalid free in PoC == optimization
Diffstat (limited to 'grammar')
-rw-r--r--grammar/rainerscript.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/grammar/rainerscript.c b/grammar/rainerscript.c
index 035b017d..a2455755 100644
--- a/grammar/rainerscript.c
+++ b/grammar/rainerscript.c
@@ -1088,6 +1088,7 @@ cnfexprEval(struct cnfexpr *expr, struct var *ret, void* usrptr)
if(bMustFree) es_deleteStr(estr_r);
}
}
+ if(r.datatype == 'S') es_deleteStr(r.d.estr);
}
} else {
cnfexprEval(expr->r, &r, usrptr);
@@ -1103,8 +1104,9 @@ cnfexprEval(struct cnfexpr *expr, struct var *ret, void* usrptr)
} else {
ret->d.n = (l.d.n == r.d.n); /*CMP*/
}
+ if(r.datatype == 'S') es_deleteStr(r.d.estr);
}
- FREE_BOTH_RET;
+ if(l.datatype == 'S') es_deleteStr(l.d.estr);
break;
case CMP_NE:
cnfexprEval(expr->l, &l, usrptr);