aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-04-13 00:19:29 +0200
committerShauren <shauren.trinity@gmail.com>2023-04-13 00:20:04 +0200
commit9ad420e5318c8cda8b133e65fe7162b1976c0ae8 (patch)
tree1ae10d74c23f55a82305d3a9b69e577fd3d365cc /src
parent63790adbfea2b9a7665f72ae6b9fe254ce195682 (diff)
Core/Misc: Fixed IpLocation crashes on invalid ip input
(cherry picked from commit fff797aff598e7adefe031a95c8d31f769d64306)
Diffstat (limited to 'src')
-rw-r--r--src/common/IPLocation/IPLocation.cpp7
1 files changed, 6 insertions, 1 deletions
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;