aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjackpoz <giacomopoz@gmail.com>2019-05-29 23:02:40 +0200
committerjackpoz <giacomopoz@gmail.com>2019-05-29 23:02:40 +0200
commit7b8f294c024230451f82ff67150e11fc31b61293 (patch)
tree76c71f3076a69c8579013f2e88485fe1c4e33706 /src
parentf0bd90cc35098475b20e736cf98885c99c04be3d (diff)
Core/Channel: Sanitize channel names
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Handlers/ChannelHandler.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/server/game/Handlers/ChannelHandler.cpp b/src/server/game/Handlers/ChannelHandler.cpp
index be163d343cc..bb6eab2565e 100644
--- a/src/server/game/Handlers/ChannelHandler.cpp
+++ b/src/server/game/Handlers/ChannelHandler.cpp
@@ -24,6 +24,7 @@
#include "ObjectMgr.h" // for normalizePlayerName
#include "Player.h"
#include <cctype>
+#include <utf8.h>
static size_t const MAX_CHANNEL_PASS_STR = 31;
@@ -57,6 +58,15 @@ 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;
+
if (ChannelMgr* cMgr = ChannelMgr::forTeam(GetPlayer()->GetTeam()))
if (Channel* channel = cMgr->GetJoinChannel(channelId, channelName, zone))
channel->JoinChannel(GetPlayer(), password);