summaryrefslogtreecommitdiffstats
path: root/bin/sh
diff options
context:
space:
mode:
authorjilles <jilles@FreeBSD.org>2013-08-24 20:06:00 +0000
committerjilles <jilles@FreeBSD.org>2013-08-24 20:06:00 +0000
commitf53205fcfa3664184b4a8f18b12f4911f2a948d3 (patch)
treecb40b1e737f1acc1fb9ee6c30f13f59b96a6b780 /bin/sh
parent84e882b514859c4085e7ee92058b4cbc4de7d597 (diff)
downloadFreeBSD-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/sh')
-rw-r--r--bin/sh/arith_yylex.c4
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 '~':
OpenPOWER on IntegriCloud