summaryrefslogtreecommitdiffstats
path: root/grammar
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2013-10-23 17:29:04 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2013-10-23 17:29:04 +0200
commit5cddb0533b53f8acfa36a65a4337ff368aa980de (patch)
tree3843f5d24c817c5ff7f0c60f05025abce80e864a /grammar
parent9cd8a73cb633a1e4e8b4babd0708d5640aa91445 (diff)
downloadrsyslog-5cddb0533b53f8acfa36a65a4337ff368aa980de.tar.gz
rsyslog-5cddb0533b53f8acfa36a65a4337ff368aa980de.tar.bz2
rsyslog-5cddb0533b53f8acfa36a65a4337ff368aa980de.zip
fix VAR handling in script grammar and code
The $-var designator is now correctly stripped off the varname.
Diffstat (limited to 'grammar')
-rw-r--r--grammar/lexer.l2
-rw-r--r--grammar/rainerscript.c3
2 files changed, 2 insertions, 3 deletions
diff --git a/grammar/lexer.l b/grammar/lexer.l
index d254d47e..e024526a 100644
--- a/grammar/lexer.l
+++ b/grammar/lexer.l
@@ -129,7 +129,7 @@ int fileno(FILE *stream);
<EXPR>0[0-7]+ | /* octal number */
<EXPR>0x[0-7a-f] | /* hex number, following rule is dec; strtoll handles all! */
<EXPR>([1-9][0-9]*|0) { yylval.n = strtoll(yytext, NULL, 0); return NUMBER; }
-<EXPR>\$[$!./]{0,1}[a-z][!a-z0-9\-_\.]* { yylval.s = strdup(yytext); return VAR; }
+<EXPR>\$[$!./]{0,1}[a-z][!a-z0-9\-_\.]* { yylval.s = strdup(yytext+1); return VAR; }
<EXPR>\'([^'\\]|\\['"\\$bntr]|\\x[0-9a-f][0-9a-f]|\\[0-7][0-7][0-7])*\' {
yytext[yyleng-1] = '\0';
unescapeStr((uchar*)yytext+1, yyleng-2);
diff --git a/grammar/rainerscript.c b/grammar/rainerscript.c
index 774e033f..1b9cda96 100644
--- a/grammar/rainerscript.c
+++ b/grammar/rainerscript.c
@@ -2554,8 +2554,7 @@ cnfvarNew(char *name)
struct cnfvar *var;
if((var = malloc(sizeof(struct cnfvar))) != NULL) {
var->nodetype = 'V';
- var->name = strdup(name+1);
- free(name);
+ var->name = name;
msgPropDescrFill(&var->prop, (uchar*)var->name, strlen(var->name));
}
return var;