From 212a1156a1607c41f1e8d75bfd0e9172e6f831da Mon Sep 17 00:00:00 2001 From: orignal Date: Sun, 5 Feb 2023 11:00:00 -0500 Subject: [PATCH] filter our addresses with invalid hosts --- libi2pd/RouterInfo.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/libi2pd/RouterInfo.cpp b/libi2pd/RouterInfo.cpp index ff86fb51..49cfd72d 100644 --- a/libi2pd/RouterInfo.cpp +++ b/libi2pd/RouterInfo.cpp @@ -252,7 +252,15 @@ namespace data { boost::system::error_code ecode; address->host = boost::asio::ip::address::from_string (value, ecode); - if (!ecode && !address->host.is_unspecified ()) isHost = true; + if (!ecode && !address->host.is_unspecified ()) + { + if (!i2p::util::net::IsInReservedRange (address->host) || + i2p::util::net::IsYggdrasilAddress (address->host)) + isHost = true; + else + // we consider such address as invalid + address->transportStyle = eTransportUnknown; + } } else if (!strcmp (key, "port")) { @@ -390,7 +398,7 @@ namespace data { if (address->IsV4 ()) supportedTransports |= eSSU2V4; if (address->IsV6 ()) supportedTransports |= eSSU2V6; - if (address->port) + if (isHost && address->port) { if (address->host.is_v4 ()) m_ReachableTransports |= eSSU2V4; if (address->host.is_v6 ()) m_ReachableTransports |= eSSU2V6;