From ef2386b80abfb22ccb697ddbdd4047aacc395c50 Mon Sep 17 00:00:00 2001 From: Ron Yorston Date: Thu, 29 Oct 2015 16:19:14 +0000 Subject: ash: only allow local variables in functions Signed-off-by: Ron Yorston Signed-off-by: Denys Vlasenko --- shell/ash.c | 3 +++ shell/ash_test/ash-misc/local2.right | 1 + shell/ash_test/ash-misc/local2.tests | 1 + 3 files changed, 5 insertions(+) create mode 100644 shell/ash_test/ash-misc/local2.right create mode 100755 shell/ash_test/ash-misc/local2.tests (limited to 'shell') diff --git a/shell/ash.c b/shell/ash.c index a2e06184b..0d7cac0b5 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -8987,6 +8987,9 @@ localcmd(int argc UNUSED_PARAM, char **argv) { char *name; + if (!funcnest) + ash_msg_and_raise_error("not in a function"); + argv = argptr; while ((name = *argv++) != NULL) { mklocal(name); diff --git a/shell/ash_test/ash-misc/local2.right b/shell/ash_test/ash-misc/local2.right new file mode 100644 index 000000000..630ef7979 --- /dev/null +++ b/shell/ash_test/ash-misc/local2.right @@ -0,0 +1 @@ +./local2.tests: local: line 1: not in a function diff --git a/shell/ash_test/ash-misc/local2.tests b/shell/ash_test/ash-misc/local2.tests new file mode 100755 index 000000000..8e14037c5 --- /dev/null +++ b/shell/ash_test/ash-misc/local2.tests @@ -0,0 +1 @@ +local x=1 -- cgit v1.2.3