Core/WorldSocket: Refactored client packet header check

This commit is contained in:
Shauren
2014-09-12 20:25:13 +02:00
parent 8f5ae1fb90
commit b3f7210f4d
2 changed files with 4 additions and 3 deletions

View File

@@ -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;

View File

@@ -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)