From 9f5f2cc2ca78df2ec5b0a604c08a057397ed5f49 Mon Sep 17 00:00:00 2001 From: WinterSolstice8 <60417494+wintersolstice8@users.noreply.github.com> Date: Wed, 12 Mar 2025 16:06:35 -0600 Subject: [PATCH] [core] Remove UB with Avatar In Party latent behavior Check objtype instead of assuming PPet is not a charmed pet --- src/map/latent_effect_container.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/map/latent_effect_container.cpp b/src/map/latent_effect_container.cpp index c063d73c9a4..74f912a7848 100644 --- a/src/map/latent_effect_container.cpp +++ b/src/map/latent_effect_container.cpp @@ -853,9 +853,9 @@ bool CLatentEffectContainer::ProcessLatentEffect(CLatentEffect& latentEffect, bo { for (auto* member : m_POwner->PParty->members) { - if (member->PPet != nullptr) + if (member->PPet != nullptr && member->PPet->objtype == TYPE_PET) { - auto* PPet = (CPetEntity*)member->PPet; + auto* PPet = static_cast(member->PPet); if ( !PPet->isDead() && PPet->m_PetID < 21 && // is a live avatar (PPet->m_PetID == latentEffect.GetConditionsValue() || latentEffect.GetConditionsValue() == 21)