瀏覽代碼

* Merged changes up to eAthena 15069.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@15525 54d463be-8e91-2dee-dedb-b68131a5f0ec
eathenabot 13 年之前
父節點
當前提交
2545a9abb1
共有 2 個文件被更改,包括 9 次插入1 次删除
  1. 1 0
      src/common/mmo.h
  2. 8 1
      src/map/pc.c

+ 1 - 0
src/common/mmo.h

@@ -563,6 +563,7 @@ enum {
 	GD_RESTORE=10012,
 	GD_EMERGENCYCALL=10013,
 	GD_DEVELOPMENT=10014,
+	GD_MAX,
 };
 
 

+ 8 - 1
src/map/pc.c

@@ -4543,12 +4543,19 @@ int pc_memo(struct map_session_data* sd, int pos)
 int pc_checkskill(struct map_session_data *sd,int skill_id)
 {
 	if(sd == NULL) return 0;
-	if( skill_id>=GD_SKILLBASE){
+	if( skill_id >= GD_SKILLBASE && skill_id < GD_MAX )
+	{
 		struct guild *g;
+
 		if( sd->status.guild_id>0 && (g=guild_search(sd->status.guild_id))!=NULL)
 			return guild_checkskill(g,skill_id);
 		return 0;
 	}
+	else if( skill_id < 0 || skill_id >= ARRAYLENGTH(sd->status.skill) )
+	{
+		ShowError("pc_checkskill: Invalid skill id %d (char_id=%d).\n", skill_id, sd->status.char_id);
+		return 0;
+	}
 
 	if(sd->status.skill[skill_id].id == skill_id)
 		return (sd->status.skill[skill_id].lv);