From 0a2a96efaa20fe5440eb5a2f21ffaddcdcea86d3 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 15 Mar 2020 14:28:29 +0100 Subject: Core/PacketIO: Validate utf8 in every client packet --- src/server/game/Handlers/ChannelHandler.cpp | 7 ------- src/server/game/Handlers/ChatHandler.cpp | 15 +++------------ 2 files changed, 3 insertions(+), 19 deletions(-) (limited to 'src/server/game') diff --git a/src/server/game/Handlers/ChannelHandler.cpp b/src/server/game/Handlers/ChannelHandler.cpp index 9dd904326f0..832429dc222 100644 --- a/src/server/game/Handlers/ChannelHandler.cpp +++ b/src/server/game/Handlers/ChannelHandler.cpp @@ -23,7 +23,6 @@ #include "ObjectMgr.h" // for normalizePlayerName #include "Player.h" #include -#include static size_t const MAX_CHANNEL_PASS_STR = 31; @@ -57,12 +56,6 @@ void WorldSession::HandleJoinChannel(WorldPacket& recvPacket) return; } - if (!utf8::is_valid(channelName.begin(), channelName.end())) - { - TC_LOG_ERROR("network", "Player %s tried to create a channel with an invalid UTF8 sequence - blocked", GetPlayer()->GetGUID().ToString().c_str()); - return; - } - if (!ValidateHyperlinksAndMaybeKick(channelName)) return; diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp index feb93f62039..f7420fcc560 100644 --- a/src/server/game/Handlers/ChatHandler.cpp +++ b/src/server/game/Handlers/ChatHandler.cpp @@ -41,7 +41,6 @@ #include "Util.h" #include "World.h" #include "WorldPacket.h" -#include #include inline bool isNasty(uint8 c) @@ -207,15 +206,15 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData) case CHAT_MSG_BATTLEGROUND_LEADER: case CHAT_MSG_AFK: case CHAT_MSG_DND: - recvData >> msg; + msg = recvData.ReadCString(lang != LANG_ADDON); break; case CHAT_MSG_WHISPER: recvData >> to; - recvData >> msg; + msg = recvData.ReadCString(lang != LANG_ADDON); break; case CHAT_MSG_CHANNEL: recvData >> channel; - recvData >> msg; + msg = recvData.ReadCString(lang != LANG_ADDON); break; } @@ -259,14 +258,6 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData) return; } - // validate utf8 - if (!utf8::is_valid(msg.begin(), msg.end())) - { - TC_LOG_ERROR("network", "Player %s (GUID: %u) sent a message containing an invalid UTF8 sequence - blocked", GetPlayer()->GetName().c_str(), - GetPlayer()->GetGUID().GetCounter()); - return; - } - // collapse multiple spaces into one if (sWorld->getBoolConfig(CONFIG_CHAT_FAKE_MESSAGE_PREVENTING)) { -- cgit v1.2.3