summaryrefslogtreecommitdiffstats
path: root/tests/shell/testcases/transactions/anon_chain_loop
diff options
context:
space:
mode:
authorFlorian Westphal <fw@strlen.de>2023-06-12 12:33:43 +0200
committerFlorian Westphal <fw@strlen.de>2023-06-16 00:14:10 +0200
commitb6b2b0cc5103612c59546cc1fea7e33814eae220 (patch)
treef17add1e773d3b99ac50a00f2b5bbfcc528bb98a /tests/shell/testcases/transactions/anon_chain_loop
parent9f5dc2b6297cb2507718222c7309516207420288 (diff)
tests: shell: add test case for chain-in-use-splat
WARNING [.]: at net/netfilter/nf_tables_api.c:1885 6.3.4-201.fc38.x86_64 #1 nft_immediate_destroy+0xc1/0xd0 [nf_tables] __nf_tables_abort+0x4b9/0xb20 [nf_tables] nf_tables_abort+0x39/0x50 [nf_tables] nfnetlink_rcv_batch+0x47c/0x8e0 [nfnetlink] nfnetlink_rcv+0x179/0x1a0 [nfnetlink] netlink_unicast+0x19e/0x290 This is because of chain->use underflow, at time destroy function is called, ->use has wrapped back to -1. Fixed via "netfilter: nf_tables: fix chain binding transaction logic". Signed-off-by: Florian Westphal <fw@strlen.de>
Diffstat (limited to 'tests/shell/testcases/transactions/anon_chain_loop')
-rwxr-xr-xtests/shell/testcases/transactions/anon_chain_loop19
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/shell/testcases/transactions/anon_chain_loop b/tests/shell/testcases/transactions/anon_chain_loop
new file mode 100755
index 00000000..2fd61810
--- /dev/null
+++ b/tests/shell/testcases/transactions/anon_chain_loop
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+# anon chains with c1 -> c2 recursive jump, expect failure
+$NFT -f - <<EOF
+table ip t {
+ chain c2 { }
+ chain c1 { }
+}
+
+add t c1 ip saddr 127.0.0.1 jump { jump c2; }
+add t c2 ip saddr 127.0.0.1 jump { jump c1; }
+EOF
+
+if [ $? -eq 0 ] ; then
+ echo "E: able to load bad ruleset" >&2
+ exit 1
+fi
+
+exit 0