From c2ce888030b6b880b3229520a8ff7d7026248a9a Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Mon, 17 Feb 2020 10:15:35 +0100 Subject: 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 Signed-off-by: Denys Vlasenko --- shell/ash.c | 2 +- shell/ash_test/ash-vars/var_10.right | 3 +++ shell/ash_test/ash-vars/var_10.tests | 4 ++++ shell/hush_test/hush-vars/var_10.right | 3 +++ shell/hush_test/hush-vars/var_10.tests | 4 ++++ 5 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 shell/ash_test/ash-vars/var_10.right create mode 100755 shell/ash_test/ash-vars/var_10.tests create mode 100644 shell/hush_test/hush-vars/var_10.right create mode 100755 shell/hush_test/hush-vars/var_10.tests (limited to 'shell') diff --git a/shell/ash.c b/shell/ash.c index a25d14de0..90496ba7e 100644 --- a/shell/ash.c +++ b/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 != '}') { /* $[{[#]][}] */ 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 000000000..675ab45f6 --- /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 000000000..7364efb55 --- /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 000000000..675ab45f6 --- /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 000000000..7364efb55 --- /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:$? -- cgit v1.2.3