]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
selftests: netfilter: nft_concat_range.sh: add check for overlap detection bug
authorFlorian Westphal <fw@strlen.de>
Thu, 4 Dec 2025 11:20:36 +0000 (12:20 +0100)
committerFlorian Westphal <fw@strlen.de>
Thu, 1 Jan 2026 10:31:48 +0000 (11:31 +0100)
without 'netfilter: nft_set_pipapo: fix range overlap detection':

  reject overlapping range on add       0s         [FAIL]
Returned success for add { 1.2.3.4 . 1.2.4.1-1.2.4.2 } given set:
table inet filter {
[..]
       elements = { 1.2.3.4 . 1.2.4.1 counter packets 0 bytes 0,
                    1.2.3.0-1.2.3.4 . 1.2.4.2 counter packets 0 bytes 0 }
}

The element collides with existing ones and was not added, but kernel
returned success to userspace.

Signed-off-by: Florian Westphal <fw@strlen.de>
tools/testing/selftests/net/netfilter/nft_concat_range.sh

index ad97c6227f351526c2fb6d7fef4bbd3e8f678b35..394166f224a4b3f22103bfb5756f563864649d70 100755 (executable)
@@ -29,7 +29,7 @@ TYPES="net_port port_net net6_port port_proto net6_port_mac net6_port_mac_proto
        net6_port_net6_port net_port_mac_proto_net"
 
 # Reported bugs, also described by TYPE_ variables below
-BUGS="flush_remove_add reload net_port_proto_match avx2_mismatch doublecreate"
+BUGS="flush_remove_add reload net_port_proto_match avx2_mismatch doublecreate insert_overlap"
 
 # List of possible paths to pktgen script from kernel tree for performance tests
 PKTGEN_SCRIPT_PATHS="
@@ -420,6 +420,18 @@ race_repeat        0
 perf_duration  0
 "
 
+TYPE_insert_overlap="
+display                reject overlapping range on add
+type_spec      ipv4_addr . ipv4_addr
+chain_spec     ip saddr . ip daddr
+dst            addr4
+proto          icmp
+
+race_repeat    0
+
+perf_duration  0
+"
+
 # Set template for all tests, types and rules are filled in depending on test
 set_template='
 flush ruleset
@@ -1954,6 +1966,37 @@ EOF
        return 0
 }
 
+add_fail()
+{
+       if nft add element inet filter test "$1" 2>/dev/null ; then
+               err "Returned success for add ${1} given set:"
+               err "$(nft -a list set inet filter test )"
+               return 1
+       fi
+
+       return 0
+}
+
+test_bug_insert_overlap()
+{
+       local elements="1.2.3.4 . 1.2.4.1"
+
+       setup veth send_"${proto}" set || return ${ksft_skip}
+
+       add "{ $elements }" || return 1
+
+       elements="1.2.3.0-1.2.3.4 . 1.2.4.1"
+       add_fail "{ $elements }" || return 1
+
+       elements="1.2.3.0-1.2.3.4 . 1.2.4.2"
+       add "{ $elements }" || return 1
+
+       elements="1.2.3.4 . 1.2.4.1-1.2.4.2"
+       add_fail "{ $elements }" || return 1
+
+       return 0
+}
+
 test_reported_issues() {
        eval test_bug_"${subtest}"
 }