aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDiscover- <amort11@hotmail.com>2014-01-16 20:48:37 +0100
committerDiscover- <amort11@hotmail.com>2014-01-16 20:48:37 +0100
commit45dc95c8dc7436ed4a40b7dc12f7e6e133aa0caf (patch)
tree8400dd90b922634787ac7b91fdfb0b4010f38b0f /src
parent61f45283ef847b69b769aabe865a3c9baf22ba3b (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.cpp18
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)