From 9ad420e5318c8cda8b133e65fe7162b1976c0ae8 Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 13 Apr 2023 00:19:29 +0200 Subject: Core/Misc: Fixed IpLocation crashes on invalid ip input (cherry picked from commit fff797aff598e7adefe031a95c8d31f769d64306) --- src/common/IPLocation/IPLocation.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/common/IPLocation/IPLocation.cpp b/src/common/IPLocation/IPLocation.cpp index 2f9ed6b0dec..b11182e4b08 100644 --- a/src/common/IPLocation/IPLocation.cpp +++ b/src/common/IPLocation/IPLocation.cpp @@ -99,7 +99,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; -- cgit v1.2.3