Browse Source

- Added a overflow check when calculating party exp share.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9010 54d463be-8e91-2dee-dedb-b68131a5f0ec
skotlex 18 years ago
parent
commit
0ee096b60e
2 changed files with 6 additions and 0 deletions
  1. 2 0
      Changelog-Trunk.txt
  2. 4 0
      src/map/party.c

+ 2 - 0
Changelog-Trunk.txt

@@ -3,6 +3,8 @@ 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/10/18
+	* Added a overflow check when calculating party exp share. [Skotlex]
 2006/10/16
 	* Adjusted UTSUSEMI/BUNSINJYUTSU so that they block range/melee weapon
 	  attacks and only melee misc attacks. This isn't 100% correct, but it's a

+ 4 - 0
src/map/party.c

@@ -725,11 +725,15 @@ int party_exp_share(struct party_data *p,struct block_list *src,unsigned int bas
 	job_exp/=c;
 	if (base_exp/100 > UINT_MAX/bonus)
 		base_exp= UINT_MAX; //Exp overflow
+	else if (base_exp > 10000)
+		base_exp = (base_exp/100)*bonus; //Calculation overflow protection
 	else
 		base_exp = base_exp*bonus/100;
 
 	if (job_exp/100 > UINT_MAX/bonus)
 		job_exp = UINT_MAX;
+	else if (job_exp > 10000)
+		job_exp = (job_exp/100)*bonus;
 	else
 		job_exp = job_exp*bonus/100;