Selaa lähdekoodia

Added an out-of-bounds crashfix for map_delobject and map_delobjectnofree.
Added missing EOL to the 'hack on namerequest' console message.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12142 54d463be-8e91-2dee-dedb-b68131a5f0ec

ultramage 17 vuotta sitten
vanhempi
commit
b6520cbfd6
2 muutettua tiedostoa jossa 14 lisäystä ja 4 poistoa
  1. 1 1
      src/map/clif.c
  2. 13 3
      src/map/map.c

+ 1 - 1
src/map/clif.c

@@ -8072,7 +8072,7 @@ void clif_parse_GetCharNameRequest(int fd, struct map_session_data *sd)
 		//Possible bot? Thanks to veider and qspirit
 		//FIXME: Still isn't perfected as clients keep asking for this on legitimate situations.
 		char gm_msg[256];
-		sprintf(gm_msg, "Hack on NameRequest: character '%s' (account: %d) requested the name of an invisible target.", sd->status.name, sd->status.account_id);
+		sprintf(gm_msg, "Hack on NameRequest: character '%s' (account: %d) requested the name of an invisible target.\n", sd->status.name, sd->status.account_id);
 		ShowWarning(gm_msg);
 		 // information is sended to all online GM
 		intif_wis_message_to_gm(wisp_server_name, battle_config.hack_info_GM_level, gm_msg);

+ 13 - 3
src/map/map.c

@@ -1142,6 +1142,12 @@ int map_addobject(struct block_list *bl)
  *------------------------------------------*/
 int map_delobjectnofree(int id)
 {
+	if( id < 0 || id >= MAX_FLOORITEM )
+	{
+		ShowError("map_delobjectnofree: invalid object id '%d'!\n", id);
+		return 0;
+	}
+
 	if(objects[id]==NULL)
 		return 0;
 
@@ -1167,13 +1173,17 @@ int map_delobjectnofree(int id)
  *------------------------------------------*/
 int map_delobject(int id)
 {
-	struct block_list *obj = objects[id];
+	if( id < 0 || id >= MAX_FLOORITEM )
+	{
+		ShowError("map_delobject: invalid object id '%d'!\n", id);
+		return 0;
+	}
 
-	if(obj==NULL)
+	if(objects[id]==NULL)
 		return 0;
 
 	map_delobjectnofree(id);
-	map_freeblock(obj);
+	map_freeblock(objects[id]);
 
 	return 0;
 }