[klibc] [klibc:update-dash] dash: parser: Only accept single-digit parameter expansion outside of braces

klibc-bot for Herbert Xu herbert at gondor.apana.org.au
Sat Mar 28 14:49:42 PDT 2020


Commit-ID:  82ab2c44da800190b0a92336162ca67ba4673600
Gitweb:     http://git.kernel.org/?p=libs/klibc/klibc.git;a=commit;h=82ab2c44da800190b0a92336162ca67ba4673600
Author:     Herbert Xu <herbert at gondor.apana.org.au>
AuthorDate: Mon, 27 May 2019 13:39:37 +0800
Committer:  Ben Hutchings <ben at decadent.org.uk>
CommitDate: Sat, 28 Mar 2020 21:42:55 +0000

[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 at gondor.apana.org.au>
Signed-off-by: Ben Hutchings <ben at decadent.org.uk>

---
 usr/dash/parser.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/usr/dash/parser.c b/usr/dash/parser.c
index 4bda42e8..b318b085 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;
 


More information about the klibc mailing list