aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/SkillHandler.cpp
diff options
context:
space:
mode:
authorKiddie <kiddie@trinitycore.contrib>2012-09-07 14:17:17 +0200
committerkaelima <kaelima@live.se>2012-09-07 14:17:17 +0200
commitc76a10d979fa19f10bd7dc1f6b12d88593364ed1 (patch)
tree880ea3e93bcfa202758fc15975be11427a3f6c55 /src/server/game/Handlers/SkillHandler.cpp
parentd0f4526d71d3f5febc99456225dd7ca402bdc5d9 (diff)
Core/SkillHandler: Fix exploit when sending modified values in CMSG_UNLEARN_SKILL
Closes #7663
Diffstat (limited to 'src/server/game/Handlers/SkillHandler.cpp')
-rwxr-xr-xsrc/server/game/Handlers/SkillHandler.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/server/game/Handlers/SkillHandler.cpp b/src/server/game/Handlers/SkillHandler.cpp
index f9731ba85db..8872816f87d 100755
--- a/src/server/game/Handlers/SkillHandler.cpp
+++ b/src/server/game/Handlers/SkillHandler.cpp
@@ -84,9 +84,13 @@ void WorldSession::HandleTalentWipeConfirmOpcode(WorldPacket & recv_data)
unit->CastSpell(_player, 14867, true); //spell: "Untalent Visual Effect"
}
-void WorldSession::HandleUnlearnSkillOpcode(WorldPacket & recv_data)
+void WorldSession::HandleUnlearnSkillOpcode(WorldPacket& recvData)
{
- uint32 skill_id;
- recv_data >> skill_id;
- GetPlayer()->SetSkill(skill_id, 0, 0, 0);
+ uint32 skillId;
+ recvData >> skillId;
+
+ if (!IsPrimaryProfessionSkill(skillId))
+ return;
+
+ GetPlayer()->SetSkill(skillId, 0, 0, 0);
}