summaryrefslogtreecommitdiffstats
path: root/grammar
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2012-09-25 15:19:34 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2012-09-25 15:19:34 +0200
commitd397bb25265b8b0926af050c4187cfbc5ab074ca (patch)
treef0e228fed2f4aa6a9017021af8ec036349db1562 /grammar
parente273e0ef19f374baf35111584b65e619e3dbcaf8 (diff)
downloadrsyslog-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.c3
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