From e57e5ad44b86423900c34eabc074307da78d462d Mon Sep 17 00:00:00 2001 From: Robert Paciorek Date: Tue, 5 Sep 2023 11:36:53 +0000 Subject: [PATCH] add int overflow protection for achievement values --- src/Services/AchievementService.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/Services/AchievementService.cs b/src/Services/AchievementService.cs index d4f4449..e7079f3 100644 --- a/src/Services/AchievementService.cs +++ b/src/Services/AchievementService.cs @@ -54,6 +54,11 @@ namespace sodoff.Services { public AchievementReward? AddDragonAchievementPoints(Dragon dragon, int? value) { dragon.PetXP = (dragon.PetXP ?? 0) + (value ?? 0); + if (dragon.PetXP < 0) { + dragon.PetXP = int.MaxValue; + value = 0; + } + return new AchievementReward{ // NOTE: RewardID and EntityTypeID are not used by client EntityID = Guid.Parse(dragon.EntityId), @@ -76,6 +81,11 @@ namespace sodoff.Services { } xpPoints.Value += value ?? 0; + if (xpPoints.Value < 0) { + xpPoints.Value = int.MaxValue; + value = 0; + } + return new AchievementReward{ EntityID = Guid.Parse(viking.Id), PointTypeID = type,