From 2412e1fc9c6a94e8667ed17663db9f04ff12edf1 Mon Sep 17 00:00:00 2001 From: arrai Date: Thu, 11 Jun 2009 12:49:56 +0200 Subject: [PATCH] [7992] added additionally check for SPELL_EFFECT_OPEN_LOCK Every gameobject which may be a target of such a spelleffect has to have a lockid. Prior to this commit it was possible to exploit SPELL_EFFECT_OPEN_LOCK spells and despawn abitrary GOs --- src/game/Spell.cpp | 4 ++++ src/shared/revision_nr.h | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 338c00eaa..35f48cf95 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -4273,7 +4273,11 @@ SpellCastResult Spell::CheckCast(bool strict) // get the lock entry uint32 lockId = 0; if (GameObject* go = m_targets.getGOTarget()) + { lockId = go->GetLockId(); + if (!lockId) + return SPELL_FAILED_BAD_TARGETS; + } else if(Item* itm = m_targets.getItemTarget()) lockId = itm->GetProto()->LockID; diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 7c7e873ae..d800994ec 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "7991" + #define REVISION_NR "7992" #endif // __REVISION_NR_H__