diff options
| -rw-r--r-- | src/server/game/Server/WorldSocket.cpp | 4 | ||||
| -rw-r--r-- | src/server/game/Server/WorldSocket.h | 3 |
2 files changed, 4 insertions, 3 deletions
diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index f8673e5d5b7..ef92a59a73d 100644 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -119,7 +119,7 @@ bool WorldSocket::ReadHeaderHandler() EndianConvertReverse(header->size); EndianConvert(header->cmd); - if (!header->IsValid()) + if (!header->IsValidSize() || !header->IsValidOpcode()) { if (_worldSession) { @@ -129,7 +129,7 @@ bool WorldSocket::ReadHeaderHandler() } else TC_LOG_ERROR("network", "WorldSocket::ReadHeaderHandler(): client %s sent malformed packet (size: %hu, cmd: %u)", - GetRemoteIpAddress().to_string().c_str(), header->size, header->cmd); + GetRemoteIpAddress().to_string().c_str(), header->size, header->cmd); CloseSocket(); return false; diff --git a/src/server/game/Server/WorldSocket.h b/src/server/game/Server/WorldSocket.h index d301e239340..3355c3d8cca 100644 --- a/src/server/game/Server/WorldSocket.h +++ b/src/server/game/Server/WorldSocket.h @@ -39,7 +39,8 @@ struct ClientPktHeader uint16 size; uint32 cmd; - bool IsValid() const { return size >= 4 && size < 10240 && cmd < NUM_MSG_TYPES; } + bool IsValidSize() const { return size >= 4 && size < 10240; } + bool IsValidOpcode() const { return cmd < NUM_MSG_TYPES; } }; #pragma pack(pop) |
