-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Closed
Description
Hi,
I am seeing a bug with the unit tests in the new 7.80 release. The test-addrset.sh fails for some specific tests on certain architectures: ppc64, ppc64le, s390x.
...
[ 83s] cd test && (./test-addrset.sh&& ./test-cmdline-split&& ./test-uri&& ./test-wildcard&& echo "All tests passed.")
..
[ 85s] PASS *.1-10,12.*.4-5,6,7
[ 85s] FAIL "192.168.0.5 192.168.0.90 192.168.1.5 1.2.3.4" !=
[ 85s] "192.168.0.5 192.168.0.90".
[ 85s] PASS 1.2.3.4/32
..
[ 86s] PASS 192.168.5,30,191.0/22
[ 86s] FAIL "1:2::3 1:2::0 1:2::ff 1:2::1ff" !=
[ 86s] "1:2::3 1:2::0 1:2::ff".
[ 86s] PASS 1:2::0003/128
I was able to narrow it down to nbase_addrset.c:sockaddr_to_mask() line 503
mask[i] = ~((1 << (unmasked_bits - (32 * (4 - i)))) - 1);
Adding the following debug code:
printf("1: %u\n", (unmasked_bits - (32 * (4 - i))));
printf("2: %u\n", ((unmasked_bits - (32 * (4 - i))) - 1));
printf("3: %u\n", ((1 << (unmasked_bits - (32 * (4 - i)))) - 1));
printf("4: %u\n", ~((1 << (unmasked_bits - (32 * (4 - i)))) - 1));
mask[i] = ~((1 << (unmasked_bits - (32 * (4 - i)))) - 1);
and running the first failing test manual:
./addrset "192.168.0.0/24" <<EOF
192.168.0.5
192.168.0.90
192.168.1.5
1.2.3.4
EOF
I get for passing architectures:
1: 4294967272
2: 4294967271
3: 255
4: 4294967040
for failing ones:
1: 4294967272
2: 4294967271
3: 4294967295
4: 0