aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2019-05-27 13:39:37 +0800
committerBen Hutchings <ben@decadent.org.uk>2020-03-28 21:42:55 +0000
commit82ab2c44da800190b0a92336162ca67ba4673600 (patch)
tree9e250eaf51507ef33f33da351df65757d4c6164e
parent42c84c0c2ed8f5b9a81bd70582edfa9d7ead08be (diff)
downloadklibc-82ab2c44da800190b0a92336162ca67ba4673600.tar.gz
[klibc] dash: parser: Only accept single-digit parameter expansion outside of braces
[ dash commit 7710a926b321879b84bf349b865b1dd4c52083f8 ] On Thu, Apr 25, 2019 at 01:39:52AM +0000, Michael Orlitzky wrote: > The POSIX spec says, > > The parameter name or symbol can be enclosed in braces, which are > optional except for positional parameters with more than one digit or > when parameter is a name and is followed by a character that could be > interpreted as part of the name. > > However, dash seems to diverge from that behavior when we get to $10: > > $ cat test.sh > echo $10 > > $ dash ./test.sh one two three four five six seven eight nine ten > ten > > $ bash ./test.sh one two three four five six seven eight nine ten > one0 This patch should fix the problem. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
-rw-r--r--usr/dash/parser.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/usr/dash/parser.c b/usr/dash/parser.c
index 4bda42e8a62a3..b318b085eaa18 100644
--- a/usr/dash/parser.c
+++ b/usr/dash/parser.c
@@ -1268,7 +1268,7 @@ varname:
do {
STPUTC(c, out);
c = pgetc_eatbnl();
- } while (is_digit(c));
+ } while (!subtype && is_digit(c));
} else if (c != '}') {
int cc = c;