Browse Source

ash: parser: Only accept single-digit parameter expansion outside of braces

Upstream commit:

    Date: Mon, 27 May 2019 13:39:37 +0800
    parser: Only accept single-digit parameter expansion outside of braces

    This patch should fix the problem.

    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko 4 years ago
parent
commit
c2ce888030

+ 1 - 1
shell/ash.c

@@ -12602,7 +12602,7 @@ parsesub: {
 			do {
 				STPUTC(c, out);
 				c = pgetc_eatbnl();
-			} while (isdigit(c));
+			} while (!subtype && isdigit(c));
 		} else if (c != '}') {
 			/* $[{[#]]<specialchar>[}] */
 			int cc = c;

+ 3 - 0
shell/ash_test/ash-vars/var_10.right

@@ -0,0 +1,3 @@
+Zero:0
+One:1
+Done:0

+ 4 - 0
shell/ash_test/ash-vars/var_10.tests

@@ -0,0 +1,4 @@
+set -- : 2 3 4 5 6 7 8 9 ten eleven
+echo Zero$10
+echo One$11
+echo Done:$?

+ 3 - 0
shell/hush_test/hush-vars/var_10.right

@@ -0,0 +1,3 @@
+Zero:0
+One:1
+Done:0

+ 4 - 0
shell/hush_test/hush-vars/var_10.tests

@@ -0,0 +1,4 @@
+set -- : 2 3 4 5 6 7 8 9 ten eleven
+echo Zero$10
+echo One$11
+echo Done:$?