diff options
author | Discover- <amort11@hotmail.com> | 2014-01-16 20:48:37 +0100 |
---|---|---|
committer | Discover- <amort11@hotmail.com> | 2014-01-16 20:48:37 +0100 |
commit | 45dc95c8dc7436ed4a40b7dc12f7e6e133aa0caf (patch) | |
tree | 8400dd90b922634787ac7b91fdfb0b4010f38b0f /src | |
parent | 61f45283ef847b69b769aabe865a3c9baf22ba3b (diff) |
Core/Items: Fix an exploit where the player was able to send CMSG_SET_AMMO with items they didn't have in their bags. Only a visual bug (not sure if it gave bonuses too, which iirc do appear in later expansions).
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Handlers/ItemHandler.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index 477b6ddfc77..3571410fd5c 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -991,9 +991,9 @@ void WorldSession::HandleAutoStoreBankItemOpcode(WorldPacket& recvPacket) void WorldSession::HandleSetAmmoOpcode(WorldPacket& recvData) { - if (!GetPlayer()->IsAlive()) + if (!_player->IsAlive()) { - GetPlayer()->SendEquipError(EQUIP_ERR_YOU_ARE_DEAD, NULL, NULL); + _player->SendEquipError(EQUIP_ERR_YOU_ARE_DEAD, NULL, NULL); return; } @@ -1002,10 +1002,18 @@ void WorldSession::HandleSetAmmoOpcode(WorldPacket& recvData) recvData >> item; - if (!item) - GetPlayer()->RemoveAmmo(); + if (item) + { + if (!_player->GetItemCount(item)) + { + _player->SendEquipError(EQUIP_ERR_ITEM_NOT_FOUND, NULL, NULL); + return; + } + + _player->SetAmmo(item); + } else - GetPlayer()->SetAmmo(item); + _player->RemoveAmmo(); } void WorldSession::SendEnchantmentLog(uint64 target, uint64 caster, uint32 itemId, uint32 enchantId) |