Guard the group-loot division by zero #1

Merged
yrtria merged 1 commit from fix/group-zero-guard into main 2026-09-03 11:21:54 -06:00
Showing only changes of commit d114e665be - Show all commits

View file

@ -5,6 +5,9 @@
void GuildFunds::OnLootMoney(Player* player, uint32 gold)
{
if (LootMultiplier < 1)
return;
if (Group* group = player->GetGroup())
{
uint32 membersInRange = 0;
@ -17,7 +20,10 @@ void GuildFunds::OnLootMoney(Player* player, uint32 gold)
}
}
if (LootMultiplier < 1)
// Guard the division. In practice the looter counts themselves, but a group whose
// members all fail the distance check would divide by zero and take worldserver
// down with SIGFPE.
if (!membersInRange)
return;
uint32 money = (gold / membersInRange) * LootMultiplier / 100;
@ -49,7 +55,7 @@ void GuildFunds::OnLootMoney(Player* player, uint32 gold)
{
uint32 money = gold * LootMultiplier / 100;
if (money < 1 || LootMultiplier < 1)
if (money < 1)
return;
guild->HandleMemberDepositMoney(player->GetSession(), money);