awk: disallow "str"++, closes bug 12981

function                                             old     new   delta
parse_expr                                           887     896      +9

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2020-06-09 01:33:54 +02:00
parent 45fa3f18ad
commit 6f7a009649
2 changed files with 11 additions and 1 deletions

View File

@ -1359,8 +1359,10 @@ static node *parse_expr(uint32_t iexp)
v = cn->l.v = xzalloc(sizeof(var));
if (tc & TC_NUMBER)
setvar_i(v, t_double);
else
else {
setvar_s(v, t_string);
xtc &= ~TC_UOPPOST; /* "str"++ is not allowed */
}
break;
case TC_REGEXP:

View File

@ -390,5 +390,13 @@ testing 'awk negative field access' \
'' \
'anything'
# was misinterpreted as (("str"++) i) instead of ("str" (++i))
# (and was executed: "str"++ is "0", thus concatenating "0" and "1"):
testing 'awk do not allow "str"++' \
'awk -v i=1 "BEGIN {print \"str\" ++i}"' \
"str2\n" \
'' \
'anything'
exit $FAILCOUNT