From 1296ac937519aa654768d944e8a96cbd69d75c8a Mon Sep 17 00:00:00 2001 From: skotlex Date: Thu, 3 Aug 2006 17:15:24 +0000 Subject: [PATCH] - Added a damage cap to CR_ACIDDEMONSTRATION of INT_MAX/2 to prevent overflows. It is not capped to INT_MAX because damage increasing skills would cause it to still over flow afterwards. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@8107 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 3 +++ src/map/battle.c | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 945d2ad21b..06835a1c82 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -3,6 +3,9 @@ Date Added AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK. IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. 2006/08/03 + * Added a damage cap to CR_ACIDDEMONSTRATION of INT_MAX/2 to prevent + overflows. It is not capped to INT_MAX because damage increasing skills + would cause it to still overflow afterwards. [Skotlex] * Fixed NPC_CRITICALSLASH not being considered as a Critical hit by the code. [Skotlex] * Added RUDE_ATTACKED_COUNT so you can easily adjust how many rude-attacks diff --git a/src/map/battle.c b/src/map/battle.c index 0e53bb9e89..7a7a1d58b0 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -2620,6 +2620,10 @@ struct Damage battle_calc_misc_attack( case CR_ACIDDEMONSTRATION: // updated the formula based on a Japanese formula found to be exact [Reddozen] md.damage = 7*tstatus->vit*sstatus->int_*sstatus->int_ / (10*(tstatus->vit+sstatus->int_)); if (tsd) md.damage>>=1; + if (md.damage < 0 || md.damage > INT_MAX>>1) + //Overflow prevention, will anyone whine if I cap it to a few billion? + //Not capped to INT_MAX to give some room for further damage increase. + md.damage = INT_MAX>>1; break; case NJ_ZENYNAGE: md.damage = skill_get_zeny(skill_num ,skill_lv);