Fix possible client crash in SMSG_ATTACKERSTATEUPDATE caused by outdated packet structure.
--HG-- branch : trunk
This commit is contained in:
+6
-8
@@ -5039,10 +5039,11 @@ void Unit::SendAttackStateUpdate(CalcDamageInfo *damageInfo)
|
|||||||
sLog.outDebug("WORLD: Sending SMSG_ATTACKERSTATEUPDATE");
|
sLog.outDebug("WORLD: Sending SMSG_ATTACKERSTATEUPDATE");
|
||||||
|
|
||||||
uint32 count = 1;
|
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 << uint32(damageInfo->HitInfo);
|
||||||
data.append(damageInfo->attacker->GetPackGUID());
|
data << damageInfo->attacker->GetPackGUID();
|
||||||
data.append(damageInfo->target->GetPackGUID());
|
data << damageInfo->target->GetPackGUID();
|
||||||
data << uint32(damageInfo->damage); // Full damage
|
data << uint32(damageInfo->damage); // Full damage
|
||||||
int32 overkill = damageInfo->damage - damageInfo->target->GetHealth();
|
int32 overkill = damageInfo->damage - damageInfo->target->GetHealth();
|
||||||
data << uint32(overkill < 0 ? 0 : overkill); // Overkill
|
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);
|
data << float(0);
|
||||||
data << float(0);
|
data << float(0);
|
||||||
for (uint8 i = 0; i < 5; ++i)
|
data << float(0); // Found in a loop with 1 iteration
|
||||||
{
|
data << float(0); // ditto ^
|
||||||
data << float(0);
|
|
||||||
data << float(0);
|
|
||||||
}
|
|
||||||
data << uint32(0);
|
data << uint32(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user