Fix possible bug occuring during shuffling of raid subgroups, and prevent client side exploit. Author: Vladimir.

--HG--
branch : trunk
This commit is contained in:
Machiavelli
2010-06-22 00:42:31 +02:00
parent 4e361d0d9b
commit eefe75a31f
3 changed files with 31 additions and 19 deletions

View File

@@ -534,8 +534,10 @@ void WorldSession::HandleGroupChangeSubGroupOpcode(WorldPacket & recv_data)
std::string name;
uint8 groupNr;
recv_data >> name;
recv_data >> groupNr;
if (groupNr >= MAX_RAID_SUBGROUPS)
return;
/** error handling **/
uint64 senderGuid = GetPlayer()->GetGUID();
@@ -546,16 +548,18 @@ void WorldSession::HandleGroupChangeSubGroupOpcode(WorldPacket & recv_data)
return;
/********************/
Player *movedPlayer=objmgr.GetPlayer(name.c_str());
if (!movedPlayer)
return;
Player *movedPlayer = objmgr.GetPlayer(name.c_str());
if (movedPlayer)
{
//Do not allow leader to change group of player in combat
if (movedPlayer->isInCombat())
return;
//Do not allow leader to change group of player in combat
if (movedPlayer->isInCombat())
return;
// everything's fine, do it
group->ChangeMembersGroup(movedPlayer, groupNr);
// everything's fine, do it
group->ChangeMembersGroup(movedPlayer, groupNr);
}
else
group->ChangeMembersGroup(objmgr.GetPlayerGUIDByName(name.c_str()), groupNr);
}
void WorldSession::HandleGroupAssistantLeaderOpcode(WorldPacket & recv_data)