Skip to content

Commit cb86459

Browse files
Merge #6675: backport: bitcoin#26078: p2p: return CSubNet in LookupSubNet
3652c99 Merge bitcoin#26078: p2p: return `CSubNet` in `LookupSubNet` (Andrew Chow) Pull request description: ## Issue being fixed or feature implemented backport 26078 ## What was done? simple backport ## How Has This Been Tested? tests ## Breaking Changes None ## Checklist: _Go over all the following points, and put an `x` in all the boxes that apply._ - [ ] I have performed a self-review of my own code - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] I have added or updated relevant unit/integration/functional/e2e tests - [ ] I have made corresponding changes to the documentation - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_ ACKs for top commit: kwvg: utACK 3652c99 knst: utACK 3652c99 UdjinM6: utACK 3652c99 Tree-SHA512: 53614afa60154917ffc6fe35e2d8e110ccb2378fb4d335b9ca07719251b759df246f803bfc05d8b11333aa6e6fbd1bf089bb5e2e8f99a05e59ad5fef01e1493d
2 parents dc6c35b + 3652c99 commit cb86459

File tree

9 files changed

+102
-118
lines changed

9 files changed

+102
-118
lines changed

src/httpserver.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,8 +179,7 @@ static bool InitHTTPAllowList()
179179
rpc_allow_subnets.push_back(CSubNet{LookupHost("127.0.0.1", false).value(), 8}); // always allow IPv4 local subnet
180180
rpc_allow_subnets.push_back(CSubNet{LookupHost("::1", false).value()}); // always allow IPv6 localhost
181181
for (const std::string& strAllow : gArgs.GetArgs("-rpcallowip")) {
182-
CSubNet subnet;
183-
LookupSubNet(strAllow, subnet);
182+
const CSubNet subnet{LookupSubNet(strAllow)};
184183
if (!subnet.IsValid()) {
185184
uiInterface.ThreadSafeMessageBox(
186185
strprintf(Untranslated("Invalid -rpcallowip subnet specification: %s. Valid are a single IP (e.g. 1.2.3.4), a network/netmask (e.g. 1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24)."), strAllow),

src/net_permissions.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,7 @@ bool NetWhitelistPermissions::TryParse(const std::string& str, NetWhitelistPermi
111111
if (!TryParsePermissionFlags(str, flags, offset, error)) return false;
112112

113113
const std::string net = str.substr(offset);
114-
CSubNet subnet;
115-
LookupSubNet(net, subnet);
114+
const CSubNet subnet{LookupSubNet(net)};
116115
if (!subnet.IsValid()) {
117116
error = strprintf(_("Invalid netmask specified in -whitelist: '%s'"), net);
118117
return false;

src/net_types.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,9 @@ void BanMapFromJson(const UniValue& bans_json, banmap_t& bans)
6363
LogPrintf("Dropping entry with unknown version (%s) from ban list\n", version);
6464
continue;
6565
}
66-
CSubNet subnet;
6766
const auto& subnet_str = ban_entry_json[BANMAN_JSON_ADDR_KEY].get_str();
68-
if (!LookupSubNet(subnet_str, subnet)) {
67+
const CSubNet subnet{LookupSubNet(subnet_str)};
68+
if (!subnet.IsValid()) {
6969
LogPrintf("Dropping entry with unparseable address or subnet (%s) from ban list\n", subnet_str);
7070
continue;
7171
}

src/netbase.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -745,10 +745,12 @@ std::unique_ptr<Sock> ConnectThroughProxy(const Proxy& proxy,
745745
return sock;
746746
}
747747

748-
bool LookupSubNet(const std::string& subnet_str, CSubNet& subnet_out)
748+
CSubNet LookupSubNet(const std::string& subnet_str)
749749
{
750+
CSubNet subnet;
751+
assert(!subnet.IsValid());
750752
if (!ContainsNoNUL(subnet_str)) {
751-
return false;
753+
return subnet;
752754
}
753755

754756
const size_t slash_pos{subnet_str.find_last_of('/')};
@@ -762,23 +764,21 @@ bool LookupSubNet(const std::string& subnet_str, CSubNet& subnet_out)
762764
uint8_t netmask;
763765
if (ParseUInt8(netmask_str, &netmask)) {
764766
// Valid number; assume CIDR variable-length subnet masking.
765-
subnet_out = CSubNet{addr.value(), netmask};
766-
return subnet_out.IsValid();
767+
subnet = CSubNet{addr.value(), netmask};
767768
} else {
768769
// Invalid number; try full netmask syntax. Never allow lookup for netmask.
769770
const std::optional<CNetAddr> full_netmask{LookupHost(netmask_str, /*fAllowLookup=*/false)};
770771
if (full_netmask.has_value()) {
771-
subnet_out = CSubNet{addr.value(), full_netmask.value()};
772-
return subnet_out.IsValid();
772+
subnet = CSubNet{addr.value(), full_netmask.value()};
773773
}
774774
}
775775
} else {
776776
// Single IP subnet (<ipv4>/32 or <ipv6>/128).
777-
subnet_out = CSubNet{addr.value()};
778-
return subnet_out.IsValid();
777+
subnet = CSubNet{addr.value()};
779778
}
780779
}
781-
return false;
780+
781+
return subnet;
782782
}
783783

784784
void InterruptSocks5(bool interrupt)

src/netbase.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -264,11 +264,9 @@ CService LookupNumeric(const std::string& name, uint16_t portDefault = 0, DNSLoo
264264
* @param[in] subnet_str A string representation of a subnet of the form
265265
* `network address [ "/", ( CIDR-style suffix | netmask ) ]`
266266
* e.g. "2001:db8::/32", "192.0.2.0/255.255.255.0" or "8.8.8.8".
267-
* @param[out] subnet_out Internal subnet representation, if parsable/resolvable
268-
* from `subnet_str`.
269-
* @returns whether the operation succeeded or not.
267+
* @returns a CSubNet object (that may or may not be valid).
270268
*/
271-
bool LookupSubNet(const std::string& subnet_str, CSubNet& subnet_out);
269+
CSubNet LookupSubNet(const std::string& subnet_str);
272270

273271
/**
274272
* Create a TCP or UNIX socket in the given address family.

src/qt/rpcconsole.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1492,9 +1492,7 @@ void RPCConsole::unbanSelectedNode()
14921492
{
14931493
// Get currently selected ban address
14941494
QString strNode = nodes.at(i).data().toString();
1495-
CSubNet possibleSubnet;
1496-
1497-
LookupSubNet(strNode.toStdString(), possibleSubnet);
1495+
CSubNet possibleSubnet{LookupSubNet(strNode.toStdString())};
14981496
if (possibleSubnet.IsValid() && m_node.unban(possibleSubnet))
14991497
{
15001498
clientModel->getBanTableModel()->refresh();

src/rpc/net.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -759,7 +759,7 @@ static RPCHelpMan setban()
759759
}
760760
}
761761
else
762-
LookupSubNet(request.params[0].get_str(), subNet);
762+
subNet = LookupSubNet(request.params[0].get_str());
763763

764764
if (! (isSubnet ? subNet.IsValid() : netAddr.IsValid()) )
765765
throw JSONRPCError(RPC_CLIENT_INVALID_IP_OR_SUBNET, "Error: Invalid IP/Subnet");

src/test/fuzz/netbase_dns_lookup.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,6 @@ FUZZ_TARGET(netbase_dns_lookup)
5959
assert(!resolved_service.IsInternal());
6060
}
6161
{
62-
CSubNet resolved_subnet;
63-
if (LookupSubNet(name, resolved_subnet)) {
64-
assert(resolved_subnet.IsValid());
65-
}
62+
(void)LookupSubNet(name);
6663
}
6764
}

src/test/netbase_tests.cpp

Lines changed: 84 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,6 @@ static CNetAddr ResolveIP(const std::string& ip)
2828
return LookupHost(ip, false).value_or(CNetAddr{});
2929
}
3030

31-
static CSubNet ResolveSubNet(const std::string& subnet)
32-
{
33-
CSubNet ret;
34-
LookupSubNet(subnet, ret);
35-
return ret;
36-
}
37-
3831
static CNetAddr CreateInternal(const std::string& host)
3932
{
4033
CNetAddr addr;
@@ -160,49 +153,49 @@ BOOST_AUTO_TEST_CASE(embedded_test)
160153
BOOST_AUTO_TEST_CASE(subnet_test)
161154
{
162155

163-
BOOST_CHECK(ResolveSubNet("1.2.3.0/24") == ResolveSubNet("1.2.3.0/255.255.255.0"));
164-
BOOST_CHECK(ResolveSubNet("1.2.3.0/24") != ResolveSubNet("1.2.4.0/255.255.255.0"));
165-
BOOST_CHECK(ResolveSubNet("1.2.3.0/24").Match(ResolveIP("1.2.3.4")));
166-
BOOST_CHECK(!ResolveSubNet("1.2.2.0/24").Match(ResolveIP("1.2.3.4")));
167-
BOOST_CHECK(ResolveSubNet("1.2.3.4").Match(ResolveIP("1.2.3.4")));
168-
BOOST_CHECK(ResolveSubNet("1.2.3.4/32").Match(ResolveIP("1.2.3.4")));
169-
BOOST_CHECK(!ResolveSubNet("1.2.3.4").Match(ResolveIP("5.6.7.8")));
170-
BOOST_CHECK(!ResolveSubNet("1.2.3.4/32").Match(ResolveIP("5.6.7.8")));
171-
BOOST_CHECK(ResolveSubNet("::ffff:127.0.0.1").Match(ResolveIP("127.0.0.1")));
172-
BOOST_CHECK(ResolveSubNet("1:2:3:4:5:6:7:8").Match(ResolveIP("1:2:3:4:5:6:7:8")));
173-
BOOST_CHECK(!ResolveSubNet("1:2:3:4:5:6:7:8").Match(ResolveIP("1:2:3:4:5:6:7:9")));
174-
BOOST_CHECK(ResolveSubNet("1:2:3:4:5:6:7:0/112").Match(ResolveIP("1:2:3:4:5:6:7:1234")));
175-
BOOST_CHECK(ResolveSubNet("192.168.0.1/24").Match(ResolveIP("192.168.0.2")));
176-
BOOST_CHECK(ResolveSubNet("192.168.0.20/29").Match(ResolveIP("192.168.0.18")));
177-
BOOST_CHECK(ResolveSubNet("1.2.2.1/24").Match(ResolveIP("1.2.2.4")));
178-
BOOST_CHECK(ResolveSubNet("1.2.2.110/31").Match(ResolveIP("1.2.2.111")));
179-
BOOST_CHECK(ResolveSubNet("1.2.2.20/26").Match(ResolveIP("1.2.2.63")));
156+
BOOST_CHECK(LookupSubNet("1.2.3.0/24") == LookupSubNet("1.2.3.0/255.255.255.0"));
157+
BOOST_CHECK(LookupSubNet("1.2.3.0/24") != LookupSubNet("1.2.4.0/255.255.255.0"));
158+
BOOST_CHECK(LookupSubNet("1.2.3.0/24").Match(ResolveIP("1.2.3.4")));
159+
BOOST_CHECK(!LookupSubNet("1.2.2.0/24").Match(ResolveIP("1.2.3.4")));
160+
BOOST_CHECK(LookupSubNet("1.2.3.4").Match(ResolveIP("1.2.3.4")));
161+
BOOST_CHECK(LookupSubNet("1.2.3.4/32").Match(ResolveIP("1.2.3.4")));
162+
BOOST_CHECK(!LookupSubNet("1.2.3.4").Match(ResolveIP("5.6.7.8")));
163+
BOOST_CHECK(!LookupSubNet("1.2.3.4/32").Match(ResolveIP("5.6.7.8")));
164+
BOOST_CHECK(LookupSubNet("::ffff:127.0.0.1").Match(ResolveIP("127.0.0.1")));
165+
BOOST_CHECK(LookupSubNet("1:2:3:4:5:6:7:8").Match(ResolveIP("1:2:3:4:5:6:7:8")));
166+
BOOST_CHECK(!LookupSubNet("1:2:3:4:5:6:7:8").Match(ResolveIP("1:2:3:4:5:6:7:9")));
167+
BOOST_CHECK(LookupSubNet("1:2:3:4:5:6:7:0/112").Match(ResolveIP("1:2:3:4:5:6:7:1234")));
168+
BOOST_CHECK(LookupSubNet("192.168.0.1/24").Match(ResolveIP("192.168.0.2")));
169+
BOOST_CHECK(LookupSubNet("192.168.0.20/29").Match(ResolveIP("192.168.0.18")));
170+
BOOST_CHECK(LookupSubNet("1.2.2.1/24").Match(ResolveIP("1.2.2.4")));
171+
BOOST_CHECK(LookupSubNet("1.2.2.110/31").Match(ResolveIP("1.2.2.111")));
172+
BOOST_CHECK(LookupSubNet("1.2.2.20/26").Match(ResolveIP("1.2.2.63")));
180173
// All-Matching IPv6 Matches arbitrary IPv6
181-
BOOST_CHECK(ResolveSubNet("::/0").Match(ResolveIP("1:2:3:4:5:6:7:1234")));
174+
BOOST_CHECK(LookupSubNet("::/0").Match(ResolveIP("1:2:3:4:5:6:7:1234")));
182175
// But not `::` or `0.0.0.0` because they are considered invalid addresses
183-
BOOST_CHECK(!ResolveSubNet("::/0").Match(ResolveIP("::")));
184-
BOOST_CHECK(!ResolveSubNet("::/0").Match(ResolveIP("0.0.0.0")));
176+
BOOST_CHECK(!LookupSubNet("::/0").Match(ResolveIP("::")));
177+
BOOST_CHECK(!LookupSubNet("::/0").Match(ResolveIP("0.0.0.0")));
185178
// Addresses from one network (IPv4) don't belong to subnets of another network (IPv6)
186-
BOOST_CHECK(!ResolveSubNet("::/0").Match(ResolveIP("1.2.3.4")));
179+
BOOST_CHECK(!LookupSubNet("::/0").Match(ResolveIP("1.2.3.4")));
187180
// All-Matching IPv4 does not Match IPv6
188-
BOOST_CHECK(!ResolveSubNet("0.0.0.0/0").Match(ResolveIP("1:2:3:4:5:6:7:1234")));
181+
BOOST_CHECK(!LookupSubNet("0.0.0.0/0").Match(ResolveIP("1:2:3:4:5:6:7:1234")));
189182
// Invalid subnets Match nothing (not even invalid addresses)
190183
BOOST_CHECK(!CSubNet().Match(ResolveIP("1.2.3.4")));
191-
BOOST_CHECK(!ResolveSubNet("").Match(ResolveIP("4.5.6.7")));
192-
BOOST_CHECK(!ResolveSubNet("bloop").Match(ResolveIP("0.0.0.0")));
193-
BOOST_CHECK(!ResolveSubNet("bloop").Match(ResolveIP("hab")));
184+
BOOST_CHECK(!LookupSubNet("").Match(ResolveIP("4.5.6.7")));
185+
BOOST_CHECK(!LookupSubNet("bloop").Match(ResolveIP("0.0.0.0")));
186+
BOOST_CHECK(!LookupSubNet("bloop").Match(ResolveIP("hab")));
194187
// Check valid/invalid
195-
BOOST_CHECK(ResolveSubNet("1.2.3.0/0").IsValid());
196-
BOOST_CHECK(!ResolveSubNet("1.2.3.0/-1").IsValid());
197-
BOOST_CHECK(ResolveSubNet("1.2.3.0/32").IsValid());
198-
BOOST_CHECK(!ResolveSubNet("1.2.3.0/33").IsValid());
199-
BOOST_CHECK(!ResolveSubNet("1.2.3.0/300").IsValid());
200-
BOOST_CHECK(ResolveSubNet("1:2:3:4:5:6:7:8/0").IsValid());
201-
BOOST_CHECK(ResolveSubNet("1:2:3:4:5:6:7:8/33").IsValid());
202-
BOOST_CHECK(!ResolveSubNet("1:2:3:4:5:6:7:8/-1").IsValid());
203-
BOOST_CHECK(ResolveSubNet("1:2:3:4:5:6:7:8/128").IsValid());
204-
BOOST_CHECK(!ResolveSubNet("1:2:3:4:5:6:7:8/129").IsValid());
205-
BOOST_CHECK(!ResolveSubNet("fuzzy").IsValid());
188+
BOOST_CHECK(LookupSubNet("1.2.3.0/0").IsValid());
189+
BOOST_CHECK(!LookupSubNet("1.2.3.0/-1").IsValid());
190+
BOOST_CHECK(LookupSubNet("1.2.3.0/32").IsValid());
191+
BOOST_CHECK(!LookupSubNet("1.2.3.0/33").IsValid());
192+
BOOST_CHECK(!LookupSubNet("1.2.3.0/300").IsValid());
193+
BOOST_CHECK(LookupSubNet("1:2:3:4:5:6:7:8/0").IsValid());
194+
BOOST_CHECK(LookupSubNet("1:2:3:4:5:6:7:8/33").IsValid());
195+
BOOST_CHECK(!LookupSubNet("1:2:3:4:5:6:7:8/-1").IsValid());
196+
BOOST_CHECK(LookupSubNet("1:2:3:4:5:6:7:8/128").IsValid());
197+
BOOST_CHECK(!LookupSubNet("1:2:3:4:5:6:7:8/129").IsValid());
198+
BOOST_CHECK(!LookupSubNet("fuzzy").IsValid());
206199

207200
//CNetAddr constructor test
208201
BOOST_CHECK(CSubNet(ResolveIP("127.0.0.1")).IsValid());
@@ -248,85 +241,85 @@ BOOST_AUTO_TEST_CASE(subnet_test)
248241
BOOST_CHECK(!CSubNet(tor_addr, 200).IsValid());
249242
BOOST_CHECK(!CSubNet(tor_addr, ResolveIP("255.0.0.0")).IsValid());
250243

251-
subnet = ResolveSubNet("1.2.3.4/255.255.255.255");
244+
subnet = LookupSubNet("1.2.3.4/255.255.255.255");
252245
BOOST_CHECK_EQUAL(subnet.ToString(), "1.2.3.4/32");
253-
subnet = ResolveSubNet("1.2.3.4/255.255.255.254");
246+
subnet = LookupSubNet("1.2.3.4/255.255.255.254");
254247
BOOST_CHECK_EQUAL(subnet.ToString(), "1.2.3.4/31");
255-
subnet = ResolveSubNet("1.2.3.4/255.255.255.252");
248+
subnet = LookupSubNet("1.2.3.4/255.255.255.252");
256249
BOOST_CHECK_EQUAL(subnet.ToString(), "1.2.3.4/30");
257-
subnet = ResolveSubNet("1.2.3.4/255.255.255.248");
250+
subnet = LookupSubNet("1.2.3.4/255.255.255.248");
258251
BOOST_CHECK_EQUAL(subnet.ToString(), "1.2.3.0/29");
259-
subnet = ResolveSubNet("1.2.3.4/255.255.255.240");
252+
subnet = LookupSubNet("1.2.3.4/255.255.255.240");
260253
BOOST_CHECK_EQUAL(subnet.ToString(), "1.2.3.0/28");
261-
subnet = ResolveSubNet("1.2.3.4/255.255.255.224");
254+
subnet = LookupSubNet("1.2.3.4/255.255.255.224");
262255
BOOST_CHECK_EQUAL(subnet.ToString(), "1.2.3.0/27");
263-
subnet = ResolveSubNet("1.2.3.4/255.255.255.192");
256+
subnet = LookupSubNet("1.2.3.4/255.255.255.192");
264257
BOOST_CHECK_EQUAL(subnet.ToString(), "1.2.3.0/26");
265-
subnet = ResolveSubNet("1.2.3.4/255.255.255.128");
258+
subnet = LookupSubNet("1.2.3.4/255.255.255.128");
266259
BOOST_CHECK_EQUAL(subnet.ToString(), "1.2.3.0/25");
267-
subnet = ResolveSubNet("1.2.3.4/255.255.255.0");
260+
subnet = LookupSubNet("1.2.3.4/255.255.255.0");
268261
BOOST_CHECK_EQUAL(subnet.ToString(), "1.2.3.0/24");
269-
subnet = ResolveSubNet("1.2.3.4/255.255.254.0");
262+
subnet = LookupSubNet("1.2.3.4/255.255.254.0");
270263
BOOST_CHECK_EQUAL(subnet.ToString(), "1.2.2.0/23");
271-
subnet = ResolveSubNet("1.2.3.4/255.255.252.0");
264+
subnet = LookupSubNet("1.2.3.4/255.255.252.0");
272265
BOOST_CHECK_EQUAL(subnet.ToString(), "1.2.0.0/22");
273-
subnet = ResolveSubNet("1.2.3.4/255.255.248.0");
266+
subnet = LookupSubNet("1.2.3.4/255.255.248.0");
274267
BOOST_CHECK_EQUAL(subnet.ToString(), "1.2.0.0/21");
275-
subnet = ResolveSubNet("1.2.3.4/255.255.240.0");
268+
subnet = LookupSubNet("1.2.3.4/255.255.240.0");
276269
BOOST_CHECK_EQUAL(subnet.ToString(), "1.2.0.0/20");
277-
subnet = ResolveSubNet("1.2.3.4/255.255.224.0");
270+
subnet = LookupSubNet("1.2.3.4/255.255.224.0");
278271
BOOST_CHECK_EQUAL(subnet.ToString(), "1.2.0.0/19");
279-
subnet = ResolveSubNet("1.2.3.4/255.255.192.0");
272+
subnet = LookupSubNet("1.2.3.4/255.255.192.0");
280273
BOOST_CHECK_EQUAL(subnet.ToString(), "1.2.0.0/18");
281-
subnet = ResolveSubNet("1.2.3.4/255.255.128.0");
274+
subnet = LookupSubNet("1.2.3.4/255.255.128.0");
282275
BOOST_CHECK_EQUAL(subnet.ToString(), "1.2.0.0/17");
283-
subnet = ResolveSubNet("1.2.3.4/255.255.0.0");
276+
subnet = LookupSubNet("1.2.3.4/255.255.0.0");
284277
BOOST_CHECK_EQUAL(subnet.ToString(), "1.2.0.0/16");
285-
subnet = ResolveSubNet("1.2.3.4/255.254.0.0");
278+
subnet = LookupSubNet("1.2.3.4/255.254.0.0");
286279
BOOST_CHECK_EQUAL(subnet.ToString(), "1.2.0.0/15");
287-
subnet = ResolveSubNet("1.2.3.4/255.252.0.0");
280+
subnet = LookupSubNet("1.2.3.4/255.252.0.0");
288281
BOOST_CHECK_EQUAL(subnet.ToString(), "1.0.0.0/14");
289-
subnet = ResolveSubNet("1.2.3.4/255.248.0.0");
282+
subnet = LookupSubNet("1.2.3.4/255.248.0.0");
290283
BOOST_CHECK_EQUAL(subnet.ToString(), "1.0.0.0/13");
291-
subnet = ResolveSubNet("1.2.3.4/255.240.0.0");
284+
subnet = LookupSubNet("1.2.3.4/255.240.0.0");
292285
BOOST_CHECK_EQUAL(subnet.ToString(), "1.0.0.0/12");
293-
subnet = ResolveSubNet("1.2.3.4/255.224.0.0");
286+
subnet = LookupSubNet("1.2.3.4/255.224.0.0");
294287
BOOST_CHECK_EQUAL(subnet.ToString(), "1.0.0.0/11");
295-
subnet = ResolveSubNet("1.2.3.4/255.192.0.0");
288+
subnet = LookupSubNet("1.2.3.4/255.192.0.0");
296289
BOOST_CHECK_EQUAL(subnet.ToString(), "1.0.0.0/10");
297-
subnet = ResolveSubNet("1.2.3.4/255.128.0.0");
290+
subnet = LookupSubNet("1.2.3.4/255.128.0.0");
298291
BOOST_CHECK_EQUAL(subnet.ToString(), "1.0.0.0/9");
299-
subnet = ResolveSubNet("1.2.3.4/255.0.0.0");
292+
subnet = LookupSubNet("1.2.3.4/255.0.0.0");
300293
BOOST_CHECK_EQUAL(subnet.ToString(), "1.0.0.0/8");
301-
subnet = ResolveSubNet("1.2.3.4/254.0.0.0");
294+
subnet = LookupSubNet("1.2.3.4/254.0.0.0");
302295
BOOST_CHECK_EQUAL(subnet.ToString(), "0.0.0.0/7");
303-
subnet = ResolveSubNet("1.2.3.4/252.0.0.0");
296+
subnet = LookupSubNet("1.2.3.4/252.0.0.0");
304297
BOOST_CHECK_EQUAL(subnet.ToString(), "0.0.0.0/6");
305-
subnet = ResolveSubNet("1.2.3.4/248.0.0.0");
298+
subnet = LookupSubNet("1.2.3.4/248.0.0.0");
306299
BOOST_CHECK_EQUAL(subnet.ToString(), "0.0.0.0/5");
307-
subnet = ResolveSubNet("1.2.3.4/240.0.0.0");
300+
subnet = LookupSubNet("1.2.3.4/240.0.0.0");
308301
BOOST_CHECK_EQUAL(subnet.ToString(), "0.0.0.0/4");
309-
subnet = ResolveSubNet("1.2.3.4/224.0.0.0");
302+
subnet = LookupSubNet("1.2.3.4/224.0.0.0");
310303
BOOST_CHECK_EQUAL(subnet.ToString(), "0.0.0.0/3");
311-
subnet = ResolveSubNet("1.2.3.4/192.0.0.0");
304+
subnet = LookupSubNet("1.2.3.4/192.0.0.0");
312305
BOOST_CHECK_EQUAL(subnet.ToString(), "0.0.0.0/2");
313-
subnet = ResolveSubNet("1.2.3.4/128.0.0.0");
306+
subnet = LookupSubNet("1.2.3.4/128.0.0.0");
314307
BOOST_CHECK_EQUAL(subnet.ToString(), "0.0.0.0/1");
315-
subnet = ResolveSubNet("1.2.3.4/0.0.0.0");
308+
subnet = LookupSubNet("1.2.3.4/0.0.0.0");
316309
BOOST_CHECK_EQUAL(subnet.ToString(), "0.0.0.0/0");
317310

318-
subnet = ResolveSubNet("1:2:3:4:5:6:7:8/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff");
311+
subnet = LookupSubNet("1:2:3:4:5:6:7:8/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff");
319312
BOOST_CHECK_EQUAL(subnet.ToString(), "1:2:3:4:5:6:7:8/128");
320-
subnet = ResolveSubNet("1:2:3:4:5:6:7:8/ffff:0000:0000:0000:0000:0000:0000:0000");
313+
subnet = LookupSubNet("1:2:3:4:5:6:7:8/ffff:0000:0000:0000:0000:0000:0000:0000");
321314
BOOST_CHECK_EQUAL(subnet.ToString(), "1::/16");
322-
subnet = ResolveSubNet("1:2:3:4:5:6:7:8/0000:0000:0000:0000:0000:0000:0000:0000");
315+
subnet = LookupSubNet("1:2:3:4:5:6:7:8/0000:0000:0000:0000:0000:0000:0000:0000");
323316
BOOST_CHECK_EQUAL(subnet.ToString(), "::/0");
324317
// Invalid netmasks (with 1-bits after 0-bits)
325-
subnet = ResolveSubNet("1.2.3.4/255.255.232.0");
318+
subnet = LookupSubNet("1.2.3.4/255.255.232.0");
326319
BOOST_CHECK(!subnet.IsValid());
327-
subnet = ResolveSubNet("1.2.3.4/255.0.255.255");
320+
subnet = LookupSubNet("1.2.3.4/255.0.255.255");
328321
BOOST_CHECK(!subnet.IsValid());
329-
subnet = ResolveSubNet("1:2:3:4:5:6:7:8/ffff:ffff:ffff:fffe:ffff:ffff:ffff:ff0f");
322+
subnet = LookupSubNet("1:2:3:4:5:6:7:8/ffff:ffff:ffff:fffe:ffff:ffff:ffff:ff0f");
330323
BOOST_CHECK(!subnet.IsValid());
331324
}
332325

@@ -612,15 +605,15 @@ BOOST_AUTO_TEST_CASE(netbase_dont_resolve_strings_with_embedded_nul_characters)
612605
BOOST_CHECK(!LookupHost("127.0.0.1\0"s, false).has_value());
613606
BOOST_CHECK(!LookupHost("127.0.0.1\0example.com"s, false).has_value());
614607
BOOST_CHECK(!LookupHost("127.0.0.1\0example.com\0"s, false).has_value());
615-
CSubNet ret;
616-
BOOST_CHECK(LookupSubNet("1.2.3.0/24"s, ret));
617-
BOOST_CHECK(!LookupSubNet("1.2.3.0/24\0"s, ret));
618-
BOOST_CHECK(!LookupSubNet("1.2.3.0/24\0example.com"s, ret));
619-
BOOST_CHECK(!LookupSubNet("1.2.3.0/24\0example.com\0"s, ret));
620-
BOOST_CHECK(LookupSubNet("pg6mmjiyjmcrsslvykfwnntlaru7p5svn6y2ymmju6nubxndf4pscryd.onion"s, ret));
621-
BOOST_CHECK(!LookupSubNet("pg6mmjiyjmcrsslvykfwnntlaru7p5svn6y2ymmju6nubxndf4pscryd.onion\0"s, ret));
622-
BOOST_CHECK(!LookupSubNet("pg6mmjiyjmcrsslvykfwnntlaru7p5svn6y2ymmju6nubxndf4pscryd.onion\0example.com"s, ret));
623-
BOOST_CHECK(!LookupSubNet("pg6mmjiyjmcrsslvykfwnntlaru7p5svn6y2ymmju6nubxndf4pscryd.onion\0example.com\0"s, ret));
608+
609+
BOOST_CHECK(LookupSubNet("1.2.3.0/24"s).IsValid());
610+
BOOST_CHECK(!LookupSubNet("1.2.3.0/24\0"s).IsValid());
611+
BOOST_CHECK(!LookupSubNet("1.2.3.0/24\0example.com"s).IsValid());
612+
BOOST_CHECK(!LookupSubNet("1.2.3.0/24\0example.com\0"s).IsValid());
613+
BOOST_CHECK(LookupSubNet("pg6mmjiyjmcrsslvykfwnntlaru7p5svn6y2ymmju6nubxndf4pscryd.onion"s).IsValid());
614+
BOOST_CHECK(!LookupSubNet("pg6mmjiyjmcrsslvykfwnntlaru7p5svn6y2ymmju6nubxndf4pscryd.onion\0"s).IsValid());
615+
BOOST_CHECK(!LookupSubNet("pg6mmjiyjmcrsslvykfwnntlaru7p5svn6y2ymmju6nubxndf4pscryd.onion\0example.com"s).IsValid());
616+
BOOST_CHECK(!LookupSubNet("pg6mmjiyjmcrsslvykfwnntlaru7p5svn6y2ymmju6nubxndf4pscryd.onion\0example.com\0"s).IsValid());
624617
}
625618

626619
BOOST_AUTO_TEST_SUITE_END()

0 commit comments

Comments
 (0)