fix(combatlog): validate packed GUID bounds in spell energize log

This commit is contained in:
Kelsi 2026-03-14 14:13:39 -07:00
parent 80d59a80aa
commit 90bc9118f9

View file

@ -4126,11 +4126,13 @@ void GameHandler::handlePacket(network::Packet& packet) {
return (packet.getSize() - packet.getReadPos() >= 8) ? packet.readUInt64() : 0; return (packet.getSize() - packet.getReadPos() >= 8) ? packet.readUInt64() : 0;
return UpdateObjectParser::readPackedGuid(packet); return UpdateObjectParser::readPackedGuid(packet);
}; };
if (packet.getSize() - packet.getReadPos() < (energizeTbc ? 8u : 1u)) { if (packet.getSize() - packet.getReadPos() < (energizeTbc ? 8u : 1u)
|| (!energizeTbc && !hasFullPackedGuid(packet))) {
packet.setReadPos(packet.getSize()); break; packet.setReadPos(packet.getSize()); break;
} }
uint64_t victimGuid = readEnergizeGuid(); uint64_t victimGuid = readEnergizeGuid();
if (packet.getSize() - packet.getReadPos() < (energizeTbc ? 8u : 1u)) { if (packet.getSize() - packet.getReadPos() < (energizeTbc ? 8u : 1u)
|| (!energizeTbc && !hasFullPackedGuid(packet))) {
packet.setReadPos(packet.getSize()); break; packet.setReadPos(packet.getSize()); break;
} }
uint64_t casterGuid = readEnergizeGuid(); uint64_t casterGuid = readEnergizeGuid();