aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Handlers/ChatHandler.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp
index ede014c8f88..789bd461820 100644
--- a/src/server/game/Handlers/ChatHandler.cpp
+++ b/src/server/game/Handlers/ChatHandler.cpp
@@ -41,6 +41,7 @@
#include "Util.h"
#include "World.h"
#include "WorldPacket.h"
+#include <utf8.h>
#include <algorithm>
inline bool isNasty(uint8 c)
@@ -72,6 +73,14 @@ inline bool ValidateMessage(Player const* player, std::string& msg)
}
}
+ // validate utf8
+ if (!utf8::is_valid(msg.begin(), msg.end()))
+ {
+ TC_LOG_ERROR("network", "Player %s (%s) sent a message containing an invalid UTF8 sequence - blocked", player->GetName().c_str(),
+ player->GetGUID().ToString().c_str());
+ return;
+ }
+
// collapse multiple spaces into one
if (sWorld->getBoolConfig(CONFIG_CHAT_FAKE_MESSAGE_PREVENTING))
{