Core/PacketIO: Added missing packet array size checks

This commit is contained in:
Shauren
2019-07-28 00:07:19 +02:00
parent 168fd20709
commit f2ef5f878d
7 changed files with 20 additions and 17 deletions

View File

@@ -1418,7 +1418,7 @@ void Guild::SendGuildRankInfo(WorldSession* session) const
TC_LOG_DEBUG("guild", "SMSG_GUILD_RANK [%s]", session->GetPlayerInfo().c_str());
}
void Guild::HandleSetAchievementTracking(WorldSession* session, std::set<uint32> const& achievementIds)
void Guild::HandleSetAchievementTracking(WorldSession* session, uint32 const* achievementIdsBegin, uint32 const* achievementIdsEnd)
{
Player* player = session->GetPlayer();
@@ -1426,10 +1426,14 @@ void Guild::HandleSetAchievementTracking(WorldSession* session, std::set<uint32>
{
std::set<uint32> criteriaIds;
for (uint32 achievementId : achievementIds)
for (uint32 const* achievementIdItr = achievementIdsBegin; achievementIdItr != achievementIdsEnd; ++achievementIdItr)
{
uint32 achievementId = *achievementIdItr;
if (AchievementEntry const* achievement = sAchievementStore.LookupEntry(achievementId))
{
if (!(achievement->Flags & ACHIEVEMENT_FLAG_GUILD) || m_achievementMgr.HasAchieved(achievementId))
continue;
if (CriteriaTree const* tree = sCriteriaMgr->GetCriteriaTree(achievement->CriteriaTree))
{
CriteriaMgr::WalkCriteriaTree(tree, [&criteriaIds](CriteriaTree const* node)
@@ -1441,7 +1445,7 @@ void Guild::HandleSetAchievementTracking(WorldSession* session, std::set<uint32>
}
}
member->SetTrackedCriteriaIds(criteriaIds);
member->SetTrackedCriteriaIds(std::move(criteriaIds));
m_achievementMgr.SendAllTrackedCriterias(player, member->GetTrackedCriteriaIds());
}
}