From a623ccd5fad619ae44b52c7113fd4cd432c34a2a Mon Sep 17 00:00:00 2001 From: Machiavelli Date: Mon, 31 May 2010 22:09:58 +0200 Subject: Fix possible client crash in SMSG_ATTACKERSTATEUPDATE caused by outdated packet structure. --HG-- branch : trunk --- src/game/Unit.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'src/game/Unit.cpp') diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index bd1921169b5..3be3a753724 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -5039,10 +5039,11 @@ void Unit::SendAttackStateUpdate(CalcDamageInfo *damageInfo) sLog.outDebug("WORLD: Sending SMSG_ATTACKERSTATEUPDATE"); uint32 count = 1; - WorldPacket data(SMSG_ATTACKERSTATEUPDATE, 16 + 45); // we guess size + size_t maxsize = 4+5+5+4+4+1+4+4+4+4+4+1+4+4+4+4+4*12; + WorldPacket data(SMSG_ATTACKERSTATEUPDATE, maxsize); // we guess size data << uint32(damageInfo->HitInfo); - data.append(damageInfo->attacker->GetPackGUID()); - data.append(damageInfo->target->GetPackGUID()); + data << damageInfo->attacker->GetPackGUID(); + data << damageInfo->target->GetPackGUID(); data << uint32(damageInfo->damage); // Full damage int32 overkill = damageInfo->damage - damageInfo->target->GetHealth(); data << uint32(overkill < 0 ? 0 : overkill); // Overkill @@ -5088,11 +5089,8 @@ void Unit::SendAttackStateUpdate(CalcDamageInfo *damageInfo) data << float(0); data << float(0); data << float(0); - for (uint8 i = 0; i < 5; ++i) - { - data << float(0); - data << float(0); - } + data << float(0); // Found in a loop with 1 iteration + data << float(0); // ditto ^ data << uint32(0); } -- cgit v1.2.3