diff options
author | Duarte Duarte <dnpd.dd@gmail.com> | 2014-08-25 00:52:30 +0100 |
---|---|---|
committer | Duarte Duarte <dnpd.dd@gmail.com> | 2014-08-25 00:52:30 +0100 |
commit | 70b70f9cda72aa1c689c966981acc2ebf91f6183 (patch) | |
tree | f7887b18054ed4f748a90fcfb46dde21a328f12d /src | |
parent | 1c1f4fe33d75ca00fa6fd3370ff0f13731523f14 (diff) | |
parent | 80cde8aa105290c3f1b5dfb022d45015e964ba24 (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.h | 2 | ||||
-rw-r--r-- | src/server/game/Handlers/ChannelHandler.cpp | 3 |
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); |