diff options
author | Shauren <shauren.trinity@gmail.com> | 2021-12-30 11:53:31 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-12-30 11:53:31 +0100 |
commit | 74088e15c1f28043521735bb04ed088e5b86934e (patch) | |
tree | c36ea41b1f93008b71d11d4db53db99c5775435a /src | |
parent | 116a3ab6943595939438a4fbbe5d098d686832d1 (diff) |
Core/Networking: Catch ByteBuffer exceptions in WorldSocket::InitializeHandler
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Server/Packets/AuthenticationPackets.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Server/WorldSocket.cpp | 28 |
2 files changed, 20 insertions, 10 deletions
diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp index b66345d9338..e5755b0539c 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.cpp +++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp @@ -53,7 +53,7 @@ bool WorldPackets::Auth::EarlyProcessClientPacket::ReadNoThrow() Read(); return true; } - catch (ByteBufferPositionException const& /*ex*/) + catch (ByteBufferException const& /*ex*/) { } diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index 5df8e8853cb..6d5c44c6e40 100644 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -159,18 +159,28 @@ void WorldSocket::InitializeHandler(boost::system::error_code error, std::size_t return; } - ByteBuffer buffer(std::move(_packetBuffer)); - std::string initializer = buffer.ReadString(ClientConnectionInitialize.length()); - if (initializer != ClientConnectionInitialize) + try { - CloseSocket(); - return; - } + ByteBuffer buffer(std::move(_packetBuffer)); + std::string initializer = buffer.ReadString(ClientConnectionInitialize.length()); + if (initializer != ClientConnectionInitialize) + { + CloseSocket(); + return; + } - uint8 terminator; - buffer >> terminator; - if (terminator != '\n') + uint8 terminator; + buffer >> terminator; + if (terminator != '\n') + { + CloseSocket(); + return; + } + } + catch (ByteBufferException const& ex) { + TC_LOG_ERROR("network", "WorldSocket::InitializeHandler ByteBufferException %s occured while parsing initial packet from ", + ex.what(), GetRemoteIpAddress().to_string().c_str()); CloseSocket(); return; } |