diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2019-05-27 13:39:37 +0800 |
---|---|---|
committer | Ben Hutchings <ben@decadent.org.uk> | 2020-03-28 21:42:55 +0000 |
commit | 82ab2c44da800190b0a92336162ca67ba4673600 (patch) | |
tree | 9e250eaf51507ef33f33da351df65757d4c6164e | |
parent | 42c84c0c2ed8f5b9a81bd70582edfa9d7ead08be (diff) | |
download | klibc-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.c | 2 |
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; |