fix(parsing): bail on suspicious maskBlockCount in CREATE_OBJECT blocks

When spline parsing consumes the wrong number of bytes, the subsequent
blockCount read lands on garbage data (e.g. 71 instead of ~5 for UNIT).
Previously the parser logged a warning but continued, reading garbage
mask/field data until hitting truncation. Now it returns false for
CREATE_OBJECT blocks with suspicious counts, letting the block loop
skip cleanly to the next entity.

Also downgrade ~44 diagnostic LOG_WARNING messages to LOG_DEBUG across
17 files (equipment, transport, DBC, heartbeat, chat, GO raypick, etc.)
to reduce log noise and make real warnings visible.
This commit is contained in:
Kelsi 2026-04-05 20:12:17 -07:00
parent e32f4fbff9
commit 069dd36698
18 changed files with 46 additions and 43 deletions

View file

@ -979,7 +979,7 @@ void SpellHandler::handleSpellGo(network::Packet& packet) {
}
}
LOG_WARNING("[GO-DIAG] SPELL_GO: spellId=", data.spellId,
LOG_DEBUG("[GO-DIAG] SPELL_GO: spellId=", data.spellId,
" casting=", casting_, " currentCast=", currentCastSpellId_,
" wasInTimedCast=", wasInTimedCast,
" lastGoGuid=0x", std::hex, owner_.lastInteractedGoGuidRef(),
@ -992,7 +992,7 @@ void SpellHandler::handleSpellGo(network::Packet& packet) {
// Gather node looting: re-send CMSG_LOOT now that the cast completed.
if (wasInTimedCast && owner_.lastInteractedGoGuidRef() != 0) {
LOG_WARNING("[GO-DIAG] Sending CMSG_LOOT for GO 0x", std::hex,
LOG_DEBUG("[GO-DIAG] Sending CMSG_LOOT for GO 0x", std::hex,
owner_.lastInteractedGoGuidRef(), std::dec);
owner_.lootTarget(owner_.lastInteractedGoGuidRef());
owner_.lastInteractedGoGuidRef() = 0;