Sage Mari : ecriture hors limites sur le tableau des fontaines
Signale en jeu : premier boss du Temple du serpent de jade infaisable, le bouclier du boss ne tombe jamais. Le tableau foutainTrigger a 4 cases (indices 0-3), mais les deux acces utilisaient la PRE-incrementation : ecriture : foutainTrigger[++tab] -> indices 1,2,3,4 lecture : foutainTrigger[++foutainCount] -> indices 1,2,3,4 Lindice 0 netait jamais rempli, et lindice 4 ecrivait 16 octets hors limites - juste par-dessus hydrolancePhase, declare immediatement apres le tableau. La salle contenant exactement 4 Fountain Stalker (56586), le debordement etait systematique a chaque pull. Corrige en post-incrementation des deux cotes, avec garde de borne a lecriture. La condition de fin de phase (foutainCount == 4) reste juste. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -162,7 +162,15 @@ class boss_wase_mari : public CreatureScript
|
||||
|
||||
itr->RemoveAllAuras();
|
||||
|
||||
foutainTrigger[++tab] = itr->GetGUID();
|
||||
// Le pre-incrementation remplissait les indices 1 a 4 d'un
|
||||
// tableau de 4 (indices valides 0-3) : l'indice 0 restait vide
|
||||
// et le 4e ecrivait 16 octets HORS LIMITES, juste par-dessus
|
||||
// hydrolancePhase. Avec exactement 4 fontaines dans la salle,
|
||||
// le debordement etait systematique a chaque pull.
|
||||
if (tab >= 4)
|
||||
break;
|
||||
|
||||
foutainTrigger[tab++] = itr->GetGUID();
|
||||
}
|
||||
|
||||
searcher.clear();
|
||||
@@ -247,7 +255,9 @@ class boss_wase_mari : public CreatureScript
|
||||
|
||||
Talk(TEXT_CALL_WATER);
|
||||
|
||||
Creature* trigger = ObjectAccessor::GetCreature(*me, foutainTrigger[++foutainCount]);
|
||||
// Meme decalage a la lecture : le 4e appel relisait
|
||||
// hydrolancePhase reinterprete en ObjectGuid.
|
||||
Creature* trigger = ObjectAccessor::GetCreature(*me, foutainTrigger[foutainCount++]);
|
||||
if (trigger)
|
||||
{
|
||||
me->CastSpell(trigger, SPELL_CALL_WATER, true);
|
||||
|
||||
Reference in New Issue
Block a user