From 74088e15c1f28043521735bb04ed088e5b86934e Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 30 Dec 2021 11:53:31 +0100 Subject: Core/Networking: Catch ByteBuffer exceptions in WorldSocket::InitializeHandler --- .../game/Server/Packets/AuthenticationPackets.cpp | 2 +- src/server/game/Server/WorldSocket.cpp | 28 +++++++++++++++------- 2 files changed, 20 insertions(+), 10 deletions(-) (limited to 'src') 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; } -- cgit v1.2.3