From 852cefe60391a16c5fa238f3ab3044dad239c508 Mon Sep 17 00:00:00 2001 From: Patrick McHardy Date: Tue, 4 Feb 2014 11:22:31 +0000 Subject: parser: prohibit redefinitions of symbols and verify existance on use This patch fixes some incorrect behaviour of symbolic variables: - prohibit redefining an existing symbol - verify existance of a symbolic variable during parsing instead of evaluation The second point makes sure we don't allow recursive definitions (var = $var), which lead to a crash due to stack exhaustion. Signed-off-by: Patrick McHardy --- tests/symbolic-define.1 | 7 +++++++ tests/symbolic-define.2 | 7 +++++++ tests/symbolic-define.3 | 6 ++++++ 3 files changed, 20 insertions(+) create mode 100644 tests/symbolic-define.1 create mode 100644 tests/symbolic-define.2 create mode 100644 tests/symbolic-define.3 (limited to 'tests') diff --git a/tests/symbolic-define.1 b/tests/symbolic-define.1 new file mode 100644 index 00000000..712ef715 --- /dev/null +++ b/tests/symbolic-define.1 @@ -0,0 +1,7 @@ +#! nft -f + +# error: variable use before definition +define var2 = $var1 +define var1 = eth0 + +filter input iif $var2 diff --git a/tests/symbolic-define.2 b/tests/symbolic-define.2 new file mode 100644 index 00000000..cd3c23c3 --- /dev/null +++ b/tests/symbolic-define.2 @@ -0,0 +1,7 @@ +#! nft -f + +# error: redefinition of an existing variable +define var1 = eth0 +define var1 = eth0 + +filter input iif $var1 diff --git a/tests/symbolic-define.3 b/tests/symbolic-define.3 new file mode 100644 index 00000000..ba224df7 --- /dev/null +++ b/tests/symbolic-define.3 @@ -0,0 +1,6 @@ +#! nft -f + +# error: recursive definition of a variable +define var1 = $var1 + +filter input iif $var1 -- cgit v1.2.3