diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2012-09-25 17:37:35 +0200 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2012-09-25 17:37:35 +0200 |
commit | c6cb5bf4aa75b79bdc3cd1af38788a32bd2c8e1a (patch) | |
tree | 9d69b59c2d356e7c0a9ba95eac1b3e0e29582164 | |
parent | eb18d9b23248732da3cba2b170ddc271ae7ec346 (diff) | |
download | rsyslog-c6cb5bf4aa75b79bdc3cd1af38788a32bd2c8e1a.tar.gz rsyslog-c6cb5bf4aa75b79bdc3cd1af38788a32bd2c8e1a.tar.bz2 rsyslog-c6cb5bf4aa75b79bdc3cd1af38788a32bd2c8e1a.zip |
fix invalid free in PoC == optimization
-rw-r--r-- | grammar/rainerscript.c | 4 |
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); |