From 777a1be39467c3b0718c2b7038f47dced2e28260 Mon Sep 17 00:00:00 2001 From: lineagedr Date: Sat, 7 Jan 2023 21:27:49 +0200 Subject: [PATCH] fix(Core/Packets): Fix a crash in MSG_RANDOM_ROLL. (#14545) --- src/server/game/Entities/Player/Player.cpp | 2 +- src/server/game/Handlers/GroupHandler.cpp | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 2109d1372..ba8ad1c2a 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -16047,7 +16047,7 @@ void Player::RemoveRestFlag(RestFlag restFlag) uint32 Player::DoRandomRoll(uint32 minimum, uint32 maximum) { - ASSERT(minimum <= maximum || maximum <= 10000); + ASSERT(minimum <= maximum); uint32 roll = urand(minimum, maximum); diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp index cf0e23b26..69bde972a 100644 --- a/src/server/game/Handlers/GroupHandler.cpp +++ b/src/server/game/Handlers/GroupHandler.cpp @@ -567,6 +567,12 @@ void WorldSession::HandleRandomRollOpcode(WorldPackets::Misc::RandomRollClient& minimum = packet.Min; maximum = packet.Max; + /** error handling **/ + if (minimum > maximum || maximum > 10000) // < 32768 for urand call + { + return; + } + GetPlayer()->DoRandomRoll(minimum, maximum); }