diff options
author | Vasil Dimov <vd@FreeBSD.org> | 2020-08-24 21:03:31 +0200 |
---|---|---|
committer | Vasil Dimov <vd@FreeBSD.org> | 2020-08-24 21:50:59 +0200 |
commit | 1ea57ad67406b3aaaef5254bc2fa7e4134f3a6df (patch) | |
tree | 6c79a8f12caca034006db2e2320ce2339411ff0c /src/test | |
parent | cb1ee1551cf39905ccb67e3d07b0e3aaaca18ce3 (diff) | |
download | bitcoin-1ea57ad67406b3aaaef5254bc2fa7e4134f3a6df.tar.xz |
net: don't accept non-left-contiguous netmasks
A netmask that contains 1-bits after 0-bits (the 1-bits are not
contiguous on the left side) is invalid [1] [2].
The code before this PR used to parse and accept such
non-left-contiguous netmasks. However, a coming change that will alter
`CNetAddr::ip` to have flexible size would make juggling with such
netmasks more difficult, thus drop support for those.
[1] https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#Subnet_masks
[2] https://tools.ietf.org/html/rfc4632#section-5.1
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/netbase_tests.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/test/netbase_tests.cpp b/src/test/netbase_tests.cpp index 49073ea657..8041c2e3ed 100644 --- a/src/test/netbase_tests.cpp +++ b/src/test/netbase_tests.cpp @@ -290,11 +290,13 @@ BOOST_AUTO_TEST_CASE(subnet_test) BOOST_CHECK_EQUAL(subnet.ToString(), "1::/16"); subnet = ResolveSubNet("1:2:3:4:5:6:7:8/0000:0000:0000:0000:0000:0000:0000:0000"); BOOST_CHECK_EQUAL(subnet.ToString(), "::/0"); + // Invalid netmasks (with 1-bits after 0-bits) subnet = ResolveSubNet("1.2.3.4/255.255.232.0"); - BOOST_CHECK_EQUAL(subnet.ToString(), "1.2.0.0/255.255.232.0"); + BOOST_CHECK(!subnet.IsValid()); + subnet = ResolveSubNet("1.2.3.4/255.0.255.255"); + BOOST_CHECK(!subnet.IsValid()); subnet = ResolveSubNet("1:2:3:4:5:6:7:8/ffff:ffff:ffff:fffe:ffff:ffff:ffff:ff0f"); - BOOST_CHECK_EQUAL(subnet.ToString(), "1:2:3:4:5:6:7:8/ffff:ffff:ffff:fffe:ffff:ffff:ffff:ff0f"); - + BOOST_CHECK(!subnet.IsValid()); } BOOST_AUTO_TEST_CASE(netbase_getgroup) |