summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2014-02-04 11:22:31 +0000
committerPatrick McHardy <kaber@trash.net>2014-02-04 11:26:25 +0000
commit852cefe60391a16c5fa238f3ab3044dad239c508 (patch)
tree90b9939c14df1a6f4dde6d55506a5e75414bb1ee /tests
parent47e7132763633d88307ed5fadaf5f2b11d5490c6 (diff)
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 <kaber@trash.net>
Diffstat (limited to 'tests')
-rw-r--r--tests/symbolic-define.17
-rw-r--r--tests/symbolic-define.27
-rw-r--r--tests/symbolic-define.36
3 files changed, 20 insertions, 0 deletions
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