aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDuarte Duarte <dnpd.dd@gmail.com>2014-08-25 00:52:30 +0100
committerDuarte Duarte <dnpd.dd@gmail.com>2014-08-25 00:52:30 +0100
commit70b70f9cda72aa1c689c966981acc2ebf91f6183 (patch)
treef7887b18054ed4f748a90fcfb46dde21a328f12d /src
parent1c1f4fe33d75ca00fa6fd3370ff0f13731523f14 (diff)
parent80cde8aa105290c3f1b5dfb022d45015e964ba24 (diff)
Merge pull request #12919 from MitchesD/misc_3
Core/Channels: fixed possible exploit with channel password
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Chat/Channels/ChannelMgr.h2
-rw-r--r--src/server/game/Handlers/ChannelHandler.cpp3
2 files changed, 5 insertions, 0 deletions
diff --git a/src/server/game/Chat/Channels/ChannelMgr.h b/src/server/game/Chat/Channels/ChannelMgr.h
index fb93af2c310..eee45ba5b97 100644
--- a/src/server/game/Chat/Channels/ChannelMgr.h
+++ b/src/server/game/Chat/Channels/ChannelMgr.h
@@ -26,6 +26,8 @@
#include "World.h"
+#define MAX_CHANNEL_PASS_STR 31
+
class ChannelMgr
{
typedef std::map<std::wstring, Channel*> ChannelMap;
diff --git a/src/server/game/Handlers/ChannelHandler.cpp b/src/server/game/Handlers/ChannelHandler.cpp
index cda6e7a4efb..d528aed6f34 100644
--- a/src/server/game/Handlers/ChannelHandler.cpp
+++ b/src/server/game/Handlers/ChannelHandler.cpp
@@ -100,6 +100,9 @@ void WorldSession::HandleChannelPassword(WorldPacket& recvPacket)
TC_LOG_DEBUG("chat.system", "CMSG_CHANNEL_PASSWORD %s Channel: %s, Password: %s",
GetPlayerInfo().c_str(), channelName.c_str(), password.c_str());
+ if (password.length() > MAX_CHANNEL_PASS_STR)
+ return;
+
if (ChannelMgr* cMgr = ChannelMgr::forTeam(GetPlayer()->GetTeam()))
if (Channel* channel = cMgr->GetChannel(channelName, GetPlayer()))
channel->Password(GetPlayer(), password);