From 80cde8aa105290c3f1b5dfb022d45015e964ba24 Mon Sep 17 00:00:00 2001 From: MitchesD Date: Sun, 24 Aug 2014 23:54:28 +0200 Subject: Core/Channels: fixed possible exploit with channel password You were able to setup longer password than you can write into the dialog window. Limit in dialog is 31 chars, in DB is varchar(32) but there was no limit in command /pass , so that was the problem. --- src/server/game/Chat/Channels/ChannelMgr.h | 2 ++ src/server/game/Handlers/ChannelHandler.cpp | 3 +++ 2 files changed, 5 insertions(+) (limited to 'src') 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 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); -- cgit v1.2.3 From 8b52a3ae51bd07a00162181398a4a4ee6afebd2c Mon Sep 17 00:00:00 2001 From: DDuarte Date: Mon, 25 Aug 2014 14:25:09 +0100 Subject: Core/Arena: Replace hardcoded 1500 mmr value by config value when loading arena members --- src/server/game/Battlegrounds/ArenaTeam.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/Battlegrounds/ArenaTeam.cpp b/src/server/game/Battlegrounds/ArenaTeam.cpp index 1bc83cccaa0..e58c09251ba 100644 --- a/src/server/game/Battlegrounds/ArenaTeam.cpp +++ b/src/server/game/Battlegrounds/ArenaTeam.cpp @@ -240,7 +240,7 @@ bool ArenaTeam::LoadMembersFromDB(QueryResult result) newMember.Name = fields[6].GetString(); newMember.Class = fields[7].GetUInt8(); newMember.PersonalRating = fields[8].GetUInt16(); - newMember.MatchMakerRating = fields[9].GetUInt16() > 0 ? fields[9].GetUInt16() : 1500; + newMember.MatchMakerRating = fields[9].GetUInt16() > 0 ? fields[9].GetUInt16() : sWorld->getIntConfig(CONFIG_ARENA_START_MATCHMAKER_RATING); // Delete member if character information is missing if (newMember.Name.empty()) -- cgit v1.2.3