From c76a10d979fa19f10bd7dc1f6b12d88593364ed1 Mon Sep 17 00:00:00 2001 From: Kiddie Date: Fri, 7 Sep 2012 14:17:17 +0200 Subject: Core/SkillHandler: Fix exploit when sending modified values in CMSG_UNLEARN_SKILL Closes #7663 --- src/server/game/Handlers/SkillHandler.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src') 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); } -- cgit v1.2.3