diff options
author | Giacomo Pozzoni <giacomopoz@gmail.com> | 2019-01-15 15:37:12 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-11-21 19:51:52 +0100 |
commit | b1b5a6a591be621e23905a7f320a3db1dc96cf7f (patch) | |
tree | d631dc6dfa1353d721bc1b008bf6045142d148ac | |
parent | 4c4aad1c4b3c1068e6fe5c029d2276d82a5a9d25 (diff) |
Core/Quest: Fix crash in GetQuestDialogStatus()
Fix possible NULL dereference in GetQuestDialogStatus()
Fixes #22516
(cherry picked from commit 6859dfa2d157f0d174004a00a9d047d6eb38f9a1)
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index a8dc4d1919f..f9fe83239d4 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -16496,16 +16496,18 @@ QuestGiverStatus Player::GetQuestDialogStatus(Object* questgiver) { case TYPEID_GAMEOBJECT: { - if (Optional<QuestGiverStatus> questStatus = questgiver->ToGameObject()->AI()->GetDialogStatus(this)) - return *questStatus; + if (GameObjectAI* ai = questgiver->ToGameObject()->AI()) + if (Optional<QuestGiverStatus> questStatus = ai->GetDialogStatus(this)) + return *questStatus; qr = sObjectMgr->GetGOQuestRelationBounds(questgiver->GetEntry()); qir = sObjectMgr->GetGOQuestInvolvedRelationBounds(questgiver->GetEntry()); break; } case TYPEID_UNIT: { - if (Optional<QuestGiverStatus> questStatus = questgiver->ToCreature()->AI()->GetDialogStatus(this)) - return *questStatus; + if (CreatureAI* ai = questgiver->ToCreature()->AI()) + if (Optional<QuestGiverStatus> questStatus = questgiver->ToCreature()->AI()->GetDialogStatus(this)) + return *questStatus; qr = sObjectMgr->GetCreatureQuestRelationBounds(questgiver->GetEntry()); qir = sObjectMgr->GetCreatureQuestInvolvedRelationBounds(questgiver->GetEntry()); break; |