diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2013-10-23 17:29:04 +0200 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2013-10-23 17:29:04 +0200 |
commit | 5cddb0533b53f8acfa36a65a4337ff368aa980de (patch) | |
tree | 3843f5d24c817c5ff7f0c60f05025abce80e864a /grammar | |
parent | 9cd8a73cb633a1e4e8b4babd0708d5640aa91445 (diff) | |
download | rsyslog-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.l | 2 | ||||
-rw-r--r-- | grammar/rainerscript.c | 3 |
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; |