diff options
author | Treeston <treeston.mmoc@gmail.com> | 2020-08-20 18:34:09 +0200 |
---|---|---|
committer | Treeston <treeston.mmoc@gmail.com> | 2020-08-20 18:34:09 +0200 |
commit | fc32c3fd3b2e91702a41798ef962cbc8475c8584 (patch) | |
tree | 5a4942e5f0a8aa62fa3084d7181dff2b63b7aff9 | |
parent | a3971ca4b05e2913850b6d4fe7d40884fa645fa0 (diff) |
Core/Warden: Ignore the `length` value in the database for MEM_CHECK checks. Hi there Aokromes.
-rw-r--r-- | sql/updates/world/3.3.5/2020_08_20_01_world.sql | 2 | ||||
-rw-r--r-- | src/server/game/Warden/WardenCheckMgr.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Warden/WardenWin.cpp | 9 |
3 files changed, 9 insertions, 6 deletions
diff --git a/sql/updates/world/3.3.5/2020_08_20_01_world.sql b/sql/updates/world/3.3.5/2020_08_20_01_world.sql new file mode 100644 index 00000000000..e4d1a60b44f --- /dev/null +++ b/sql/updates/world/3.3.5/2020_08_20_01_world.sql @@ -0,0 +1,2 @@ +-- +UPDATE `warden_checks` SET `length`=NULL WHERE `type`=243; diff --git a/src/server/game/Warden/WardenCheckMgr.cpp b/src/server/game/Warden/WardenCheckMgr.cpp index c3b1651ec19..5cbda5d1645 100644 --- a/src/server/game/Warden/WardenCheckMgr.cpp +++ b/src/server/game/Warden/WardenCheckMgr.cpp @@ -82,10 +82,10 @@ void WardenCheckMgr::LoadWardenChecks() _checkResults.emplace(id, fields[3].GetBinary()); if (type == MEM_CHECK || type == PAGE_CHECK_A || type == PAGE_CHECK_B || type == PROC_CHECK) - { wardenCheck.Address = fields[4].GetUInt32(); + + if (type == PAGE_CHECK_A || type == PAGE_CHECK_B || type == PROC_CHECK) wardenCheck.Length = fields[5].GetUInt8(); - } // PROC_CHECK support missing if (type == MEM_CHECK || type == MPQ_CHECK || type == LUA_STR_CHECK || type == DRIVER_CHECK || type == MODULE_CHECK) diff --git a/src/server/game/Warden/WardenWin.cpp b/src/server/game/Warden/WardenWin.cpp index 2a92c95195c..5e3cc00e895 100644 --- a/src/server/game/Warden/WardenWin.cpp +++ b/src/server/game/Warden/WardenWin.cpp @@ -186,7 +186,7 @@ void WardenWin::RequestChecks() for (WardenCheckCategory category : EnumUtils::Iterate<WardenCheckCategory>()) { auto& [checks, checksIt] = _checks[category]; - if (checksIt == checks.end()) + if ((checksIt == checks.end()) && !checks.empty()) { TC_LOG_DEBUG("warden", "Finished all %s checks, re-shuffling", EnumUtils::ToConstant(category)); Trinity::Containers::RandomShuffle(checks); @@ -242,7 +242,7 @@ void WardenWin::RequestChecks() { buff << uint8(0x00); buff << uint32(check.Address); - buff << uint8(check.Length); + buff << uint8(sWardenCheckMgr->GetCheckResult(id).size()); break; } case PAGE_CHECK_A: @@ -376,11 +376,12 @@ void WardenWin::HandleCheckResult(ByteBuffer &buff) continue; } + WardenCheckResult const& expected = sWardenCheckMgr->GetCheckResult(id); + std::vector<uint8> response; - response.resize(check.Length); + response.resize(expected.size()); buff.read(response.data(), response.size()); - WardenCheckResult const& expected = sWardenCheckMgr->GetCheckResult(id); if (response != expected) { TC_LOG_DEBUG("warden", "RESULT MEM_CHECK fail CheckId %u account Id %u", id, _session->GetAccountId()); |