Переглянути джерело

- Fixed negative value exploit (view changelog)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7647 54d463be-8e91-2dee-dedb-b68131a5f0ec
Zido 19 роки тому
батько
коміт
efe9c7901d
2 змінених файлів з 9 додано та 2 видалено
  1. 5 0
      Changelog-Trunk.txt
  2. 4 2
      src/map/pc.c

+ 5 - 0
Changelog-Trunk.txt

@@ -4,6 +4,11 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
 2006/07/12
+	* Fixed exploit in pc_bonus there are no checks that check that the value being
+	  added onto a status don't make it go below zero, which means if you have a mineral
+	  card and reset stats it reduces your base attack to lower than zero, making it
+	  go up to 64000. Fixed by adding a check for SP_BASE_ATK, although i recommend
+	  doing it for other status bonuses also [Zido]
 	* Recoded NJ_BAKUENRYU to behave as I understand it best from the
 	  skill-description (since Haplo told me this skill doesn't really has video
 	  information or anything...) [Skotlex]

+ 4 - 2
src/map/pc.c

@@ -1278,8 +1278,10 @@ int pc_bonus(struct map_session_data *sd,int type,int val)
 			status->lhw->atk2+=val;
 		break;
 	case SP_BASE_ATK:
-		if(sd->state.lr_flag != 2)
-			status->batk+=val;
+		if(sd->state.lr_flag != 2) {
+			if(!(val<0 && ((val-val-val)>status->batk)))
+				status->batk+=val;
+		}
 		break;
 	case SP_MATK1:
 		if(sd->state.lr_flag != 2)