Core/Misc: Fixed IpLocation crashes on invalid ip input

This commit is contained in:
Shauren
2023-04-13 00:19:29 +02:00
parent 69b8e27810
commit fff797aff5

View File

@@ -98,7 +98,12 @@ void IpLocationStore::Load()
IpLocationRecord const* IpLocationStore::GetLocationRecord(std::string const& ipAddress) const
{
uint32 ip = Trinity::Net::address_to_uint(Trinity::Net::make_address_v4(ipAddress));
boost::system::error_code error;
boost::asio::ip::address_v4 address = Trinity::Net::make_address_v4(ipAddress, error);
if (error)
return nullptr;
uint32 ip = Trinity::Net::address_to_uint(address);
auto itr = std::upper_bound(_ipLocationStore.begin(), _ipLocationStore.end(), ip, [](uint32 ip, IpLocationRecord const& loc) { return ip < loc.IpTo; });
if (itr == _ipLocationStore.end())
return nullptr;