diff options
author | Shauren <shauren.trinity@gmail.com> | 2016-04-10 00:08:11 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2016-04-10 00:08:11 +0200 |
commit | 174a6142f4053c78f0276c130f7d653c2d93b37e (patch) | |
tree | 33728a2bd42e27069e247d2acc3cf3ff7269ea0e | |
parent | 4c9d1871d7651c7673fdf55d83c690ce3de22e20 (diff) |
Core/Networking: Fixed a crash caused by attempting to connect directly to worldserver by setting portal=worldserver address
Closes #16927
-rw-r--r-- | src/server/game/Server/WorldSocket.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index 3774dc571e2..82acf2b1811 100644 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -168,9 +168,21 @@ void WorldSocket::InitializeHandler(boost::system::error_code error, std::size_t ByteBuffer buffer(std::move(_packetBuffer)); buffer >> magic; + if (magic != ConnectionInitializeMagic) + { + CloseSocket(); + return; + } + buffer >> length; + if (length > ClientConnectionInitialize.length()) + { + CloseSocket(); + return; + } + std::string initializer = buffer.ReadString(length); - if (magic != ConnectionInitializeMagic || initializer != ClientConnectionInitialize) + if (initializer != ClientConnectionInitialize) { CloseSocket(); return; |