From 1f8c922a8ffd8fb216c050b86fdbc4040e5780f6 Mon Sep 17 00:00:00 2001 From: ultramage Date: Sun, 8 Jul 2007 19:24:48 +0000 Subject: * Fixed typo in 'deletearray' messing up the script engine * Added a check to pc_skill() to prevent crashes on unknown skill ids git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@10868 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/pc.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/map/pc.c') diff --git a/src/map/pc.c b/src/map/pc.c index 79a898cff..49d880767 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -2494,11 +2494,17 @@ int pc_skill(TBL_PC* sd, int id, int level, int flag) { nullpo_retr(0, sd); - if( level > MAX_SKILL_LEVEL ){ + if( id <= 0 || id >= MAX_SKILL || skill_db[id].name == NULL) { if( battle_config.error_log ) - ShowError("pc_skill: Skill level %d too high. Max lv supported is MAX_SKILL_LEVEL (%d)\n", level, MAX_SKILL_LEVEL); + ShowError("pc_skill: Skill with id %d does not exist in the skill database\n", id); return 0; } + if( level > MAX_SKILL_LEVEL ) { + if( battle_config.error_log ) + ShowError("pc_skill: Skill level %d too high. Max lv supported is %d\n", level, MAX_SKILL_LEVEL); + return 0; + } + switch( flag ){ case 0: //Set skill data overwriting whatever was there before. sd->status.skill[id].id = id; -- cgit v1.2.3-70-g09d2