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>
diff --git a/shell/ash.c b/shell/ash.c
index a25d14d..90496ba 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -12602,7 +12602,7 @@
do {
STPUTC(c, out);
c = pgetc_eatbnl();
- } while (isdigit(c));
+ } while (!subtype && isdigit(c));
} else if (c != '}') {
/* $[{[#]]<specialchar>[}] */
int cc = c;
diff --git a/shell/ash_test/ash-vars/var_10.right b/shell/ash_test/ash-vars/var_10.right
new file mode 100644
index 0000000..675ab45
--- /dev/null
+++ b/shell/ash_test/ash-vars/var_10.right
@@ -0,0 +1,3 @@
+Zero:0
+One:1
+Done:0
diff --git a/shell/ash_test/ash-vars/var_10.tests b/shell/ash_test/ash-vars/var_10.tests
new file mode 100755
index 0000000..7364efb
--- /dev/null
+++ b/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:$?
diff --git a/shell/hush_test/hush-vars/var_10.right b/shell/hush_test/hush-vars/var_10.right
new file mode 100644
index 0000000..675ab45
--- /dev/null
+++ b/shell/hush_test/hush-vars/var_10.right
@@ -0,0 +1,3 @@
+Zero:0
+One:1
+Done:0
diff --git a/shell/hush_test/hush-vars/var_10.tests b/shell/hush_test/hush-vars/var_10.tests
new file mode 100755
index 0000000..7364efb
--- /dev/null
+++ b/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:$?