diff options
author | jilles <jilles@FreeBSD.org> | 2013-08-24 20:06:00 +0000 |
---|---|---|
committer | jilles <jilles@FreeBSD.org> | 2013-08-24 20:06:00 +0000 |
commit | f53205fcfa3664184b4a8f18b12f4911f2a948d3 (patch) | |
tree | cb40b1e737f1acc1fb9ee6c30f13f59b96a6b780 /bin | |
parent | 84e882b514859c4085e7ee92058b4cbc4de7d597 (diff) | |
download | FreeBSD-src-f53205fcfa3664184b4a8f18b12f4911f2a948d3.zip FreeBSD-src-f53205fcfa3664184b4a8f18b12f4911f2a948d3.tar.gz |
sh: Reject ++ and -- in arithmetic.
POSIX does not require ++ and -- in arithmetic. It is probably more useful
to reject them than to treat ++x and --x as x silently.
Note that the behaviour of increment and decrement can be obtained via
(x+=1), ((x+=1)-1), (x-=1) and ((x-=1)+1).
PR: bin/176444
Diffstat (limited to 'bin')
-rw-r--r-- | bin/sh/arith_yylex.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/bin/sh/arith_yylex.c b/bin/sh/arith_yylex.c index f6eebdb..ad08184 100644 --- a/bin/sh/arith_yylex.c +++ b/bin/sh/arith_yylex.c @@ -218,9 +218,13 @@ checkeqcur: value += ARITH_REM - '%'; goto checkeq; case '+': + if (buf[1] == '+') + return ARITH_BAD; value += ARITH_ADD - '+'; goto checkeq; case '-': + if (buf[1] == '-') + return ARITH_BAD; value += ARITH_SUB - '-'; goto checkeq; case '~': |