aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2020-08-20 18:34:09 +0200
committerShauren <shauren.trinity@gmail.com>2022-02-04 00:27:11 +0100
commit669b6bea210db40cf2a6b01c7b52d51243bc79bf (patch)
tree0844ec5be3bcf5f2793920f051d4a434dd377a6f /src
parent15d75dea10c058364a2577b73a627b4701d4ce01 (diff)
Core/Warden: Ignore the `length` value in the database for MEM_CHECK checks. Hi there Aokromes.
(cherry picked from commit fc32c3fd3b2e91702a41798ef962cbc8475c8584)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Warden/WardenCheckMgr.cpp4
-rw-r--r--src/server/game/Warden/WardenWin.cpp9
2 files changed, 7 insertions, 6 deletions
diff --git a/src/server/game/Warden/WardenCheckMgr.cpp b/src/server/game/Warden/WardenCheckMgr.cpp
index 55b1b479dde..c4a4d7de49e 100644
--- a/src/server/game/Warden/WardenCheckMgr.cpp
+++ b/src/server/game/Warden/WardenCheckMgr.cpp
@@ -84,10 +84,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 63bf304e6e2..92e77378198 100644
--- a/src/server/game/Warden/WardenWin.cpp
+++ b/src/server/game/Warden/WardenWin.cpp
@@ -187,7 +187,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);
@@ -243,7 +243,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:
@@ -377,11 +377,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());