From ce8f9b9a4efc8a3f110465db5310f08067658f60 Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 13 Nov 2019 00:15:35 +0100 Subject: Core/Battle Pets: Fixed possible crash in packet handler --- src/server/game/BattlePets/BattlePetMgr.h | 2 +- src/server/game/Handlers/BattlePetHandler.cpp | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'src/server') diff --git a/src/server/game/BattlePets/BattlePetMgr.h b/src/server/game/BattlePets/BattlePetMgr.h index e27c2d544a2..a8e7eb08a9b 100644 --- a/src/server/game/BattlePets/BattlePetMgr.h +++ b/src/server/game/BattlePets/BattlePetMgr.h @@ -115,7 +115,7 @@ public: uint8 GetPetCount(uint32 species) const; - WorldPackets::BattlePet::BattlePetSlot* GetSlot(uint8 slot) { return &_slots[slot]; } + WorldPackets::BattlePet::BattlePetSlot* GetSlot(uint8 slot) { return slot < _slots.size() ? &_slots[slot] : nullptr; } void UnlockSlot(uint8 slot); WorldSession* GetOwner() const { return _owner; } diff --git a/src/server/game/Handlers/BattlePetHandler.cpp b/src/server/game/Handlers/BattlePetHandler.cpp index 95bdffceaa0..ab4818888a4 100644 --- a/src/server/game/Handlers/BattlePetHandler.cpp +++ b/src/server/game/Handlers/BattlePetHandler.cpp @@ -28,7 +28,8 @@ void WorldSession::HandleBattlePetRequestJournal(WorldPackets::BattlePet::Battle void WorldSession::HandleBattlePetSetBattleSlot(WorldPackets::BattlePet::BattlePetSetBattleSlot& battlePetSetBattleSlot) { if (BattlePetMgr::BattlePet* pet = GetBattlePetMgr()->GetPet(battlePetSetBattleSlot.PetGuid)) - GetBattlePetMgr()->GetSlot(battlePetSetBattleSlot.Slot)->Pet = pet->PacketInfo; + if (WorldPackets::BattlePet::BattlePetSlot* slot = GetBattlePetMgr()->GetSlot(battlePetSetBattleSlot.Slot)) + slot->Pet = pet->PacketInfo; } void WorldSession::HandleBattlePetModifyName(WorldPackets::BattlePet::BattlePetModifyName& battlePetModifyName) -- cgit v1.2.3