diff options
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/game/Warden/WardenCheckMgr.cpp | 4 | ||||
| -rw-r--r-- | src/server/game/Warden/WardenWin.cpp | 9 | 
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()); | 
