From 6fa394d59d91e6cfa3c107128ad1f7d6a6d70257 Mon Sep 17 00:00:00 2001 From: Jozsef Kadlecsik Date: Fri, 13 Mar 2015 21:18:58 +0100 Subject: Fix cidr handling for hash:*net* types Commit 092d67cda9ad4 broke the cidr handling for the hash:*net* types when the sets were used by the SET target: entries with invalid cidr values were added to the sets. Reported by Jonathan Johnson. Testsuite entry is added to verify the fix. --- tests/iptables.sh | 5 +++++ tests/match_target.t | 16 ++++++++++++++++ tests/resizet.sh | 2 +- 3 files changed, 22 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/iptables.sh b/tests/iptables.sh index c5b9bf7..7ea90e0 100755 --- a/tests/iptables.sh +++ b/tests/iptables.sh @@ -95,6 +95,11 @@ del) $cmd -F INPUT $cmd -A INPUT -j SET --del-set ipport src,src ;; +add) + $ipset n test hash:net $family 2>/dev/null + $cmd -F INPUT + $cmd -A INPUT -j SET --add-set test src + ;; timeout) $ipset n test hash:ip,port timeout 2 $cmd -A INPUT -j SET --add-set test src,src --timeout 10 --exist diff --git a/tests/match_target.t b/tests/match_target.t index 1739fae..02a0ea3 100644 --- a/tests/match_target.t +++ b/tests/match_target.t @@ -88,4 +88,20 @@ 0 ./check_klog.sh 10.255.255.64 udp 1025 mark # Destroy sets and rules 0 ./iptables.sh inet stop +# Create test set and iptables rules +0 ./iptables.sh inet add +# Send probe packet from 10.255.255.64,udp:1025 +0 sendip -p ipv4 -id 127.0.0.1 -is 10.255.255.64 -p udp -ud 80 -us 1025 127.0.0.1 +# Check that 10.255.255.64 is added to the set +0 ipset t test 10.255.255.64 +# Flush set +0 ipset f test +# Add a /24 network to the set +0 ipset a test 1.1.1.0/24 +# Send probe packet from 10.255.255.64,udp:1025 again +0 sendip -p ipv4 -id 127.0.0.1 -is 10.255.255.64 -p udp -ud 80 -us 1025 127.0.0.1 +# Check that 10.255.255.0/24 is added to the set +0 ipset t test 10.255.255.0/24 +# Destroy sets and rules +0 ./iptables.sh inet stop # eof diff --git a/tests/resizet.sh b/tests/resizet.sh index b5f7fdc..7dc309f 100755 --- a/tests/resizet.sh +++ b/tests/resizet.sh @@ -103,7 +103,7 @@ case "$2" in ;; esac $ipset l test | grep ^$ip | while read x y z; do - if [ $z -lt 10 -o $z -gt 99 ]; then + if [ $z -lt 10 -o $z -gt 100 ]; then exit 1 fi done -- cgit v1.2.3