diff options
author | Machiavelli <none@none> | 2010-05-31 22:09:58 +0200 |
---|---|---|
committer | Machiavelli <none@none> | 2010-05-31 22:09:58 +0200 |
commit | a623ccd5fad619ae44b52c7113fd4cd432c34a2a (patch) | |
tree | 81efc774c0bb8a123581f1c1b47412fc2a166f9c /src | |
parent | 836f7e19fd841e46d71401d2b90627030ce863c6 (diff) |
Fix possible client crash in SMSG_ATTACKERSTATEUPDATE caused by outdated packet structure.
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/Unit.cpp | 14 |
1 files changed, 6 insertions, 8 deletions
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); } |