diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2012-09-25 15:19:34 +0200 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2012-09-25 15:19:34 +0200 |
commit | d397bb25265b8b0926af050c4187cfbc5ab074ca (patch) | |
tree | f0e228fed2f4aa6a9017021af8ec036349db1562 /grammar | |
parent | e273e0ef19f374baf35111584b65e619e3dbcaf8 (diff) | |
download | rsyslog-d397bb25265b8b0926af050c4187cfbc5ab074ca.tar.gz rsyslog-d397bb25265b8b0926af050c4187cfbc5ab074ca.tar.xz rsyslog-d397bb25265b8b0926af050c4187cfbc5ab074ca.zip |
fix invalid free caused by optimized script execution
Diffstat (limited to 'grammar')
-rw-r--r-- | grammar/rainerscript.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/grammar/rainerscript.c b/grammar/rainerscript.c index d0c2dc6b..199aaa97 100644 --- a/grammar/rainerscript.c +++ b/grammar/rainerscript.c @@ -1035,8 +1035,9 @@ evalVar(struct cnfvar *var, void *usrptr, struct var *ret) #define FREE_TWO_STRINGS \ if(bMustFree) es_deleteStr(estr_r); \ + if(expr->r->nodetype != 'S' && r.datatype == 'S') es_deleteStr(r.d.estr); \ if(bMustFree2) es_deleteStr(estr_l); \ - FREE_BOTH_RET + if(l.datatype == 'S') es_deleteStr(l.d.estr) /* evaluate an expression. * Note that we try to avoid malloc whenever possible (because of |