From 9f1d4da7ff12e6d23b6110006d1bc78230b8d96c Mon Sep 17 00:00:00 2001 From: Lemongrass3110 Date: Thu, 8 Jan 2015 00:08:01 +0100 Subject: [PATCH 1/3] Fixed a lot of scanf issues reported by rathena's cppcheck --- src/char/char.c | 6 +- src/common/core.c | 2 +- src/common/mapindex.c | 2 +- src/map/atcommand.c | 124 +++++++++++++++++++++--------------------- src/map/map.c | 2 +- src/map/npc.c | 73 +++++++++++++------------ src/map/script.c | 8 +-- src/map/skill.c | 7 +-- 8 files changed, 115 insertions(+), 109 deletions(-) diff --git a/src/char/char.c b/src/char/char.c index f29edbc0c9..dfff950ffa 100644 --- a/src/char/char.c +++ b/src/char/char.c @@ -2611,9 +2611,11 @@ bool char_config_read(const char* cfgName, bool normal){ charserv_config.save_log = config_switch(w2); } else if (strcmpi(w1, "start_point") == 0) { char map[MAP_NAME_LENGTH_EXT]; - int x, y; - if (sscanf(w2, "%15[^,],%d,%d", map, &x, &y) < 3) + short x, y; + if (sscanf(w2, "%15[^,],%6hd,%6hd", map, &x, &y) < 3){ + ShowWarning( "Specified start_point has an invalid format.\n" ); continue; + } charserv_config.start_point.map = mapindex_name2id(map); if (!charserv_config.start_point.map) ShowError("Specified start_point %s not found in map-index cache.\n", map); diff --git a/src/common/core.c b/src/common/core.c index 8180059382..78900db392 100644 --- a/src/common/core.c +++ b/src/common/core.c @@ -218,7 +218,7 @@ const char* get_svn_revision(void) { // XML File format while (fgets(line,sizeof(line),fp)) if (strstr(line,"revision=")) break; - if (sscanf(line," %*[^\"]\"%d%*[^\n]", &rev) == 1) { + if (sscanf(line," %*[^\"]\"%11d%*[^\n]", &rev) == 1) { snprintf(svn_version_buffer, sizeof(svn_version_buffer), "%d", rev); } } diff --git a/src/common/mapindex.c b/src/common/mapindex.c index 685a56f347..400063837c 100644 --- a/src/common/mapindex.c +++ b/src/common/mapindex.c @@ -145,7 +145,7 @@ void mapindex_init(void) { if(line[0] == '/' && line[1] == '/') continue; - switch (sscanf(line, "%11s\t%d", map_name, &index)) { + switch (sscanf(line, "%11s\t%11d", map_name, &index)) { case 1: //Map with no ID given, auto-assign index = last_index+1; case 2: //Map with ID given diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 62d2368ae7..f31419c4bb 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -139,8 +139,8 @@ ACMD_FUNC(send) int len=0,type; // read message type as hex number (without the 0x) if(!message || !*message || - !((sscanf(message, "len %x", &type)==1 && (len=1)) - || sscanf(message, "%x", &type)==1) ) + !((sscanf(message, "len %8x", &type)==1 && (len=1)) + || sscanf(message, "%8x", &type)==1) ) { int i; for (i = 900; i <= 903; ++i) @@ -172,7 +172,7 @@ ACMD_FUNC(send) #define GET_VALUE(p,num) \ {\ - if(sscanf((p), "x%lx", &(num)) < 1 && sscanf((p), "%ld ", &(num)) < 1){\ + if(sscanf((p), "x%16lx", &(num)) < 1 && sscanf((p), "%20ld ", &(num)) < 1){\ PARSE_ERROR("Invalid number in:",(p));\ return -1;\ }\ @@ -448,8 +448,8 @@ ACMD_FUNC(mapmove) memset(map_name, '\0', sizeof(map_name)); if (!message || !*message || - (sscanf(message, "%15s %hd %hd", map_name, &x, &y) < 3 && - sscanf(message, "%15[^,],%hd,%hd", map_name, &x, &y) < 1)) { + (sscanf(message, "%15s %6hd %6hd", map_name, &x, &y) < 3 && + sscanf(message, "%15[^,],%6hd,%6hd", map_name, &x, &y) < 1)) { clif_displaymessage(fd, msg_txt(sd,909)); // Please enter a map (usage: @warp/@rura/@mapmove ). return -1; } @@ -576,7 +576,7 @@ ACMD_FUNC(jump) memset(atcmd_output, '\0', sizeof(atcmd_output)); - sscanf(message, "%hd %hd", &x, &y); + sscanf(message, "%6hd %6hd", &x, &y); // TODO: Should be checked if (map[sd->bl.m].flag.noteleport && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) { clif_displaymessage(fd, msg_txt(sd,248)); // You are not authorized to warp from your current map. @@ -843,13 +843,13 @@ ACMD_FUNC(load) *------------------------------------------*/ ACMD_FUNC(speed) { - int speed; + short speed; nullpo_retr(-1, sd); memset(atcmd_output, '\0', sizeof(atcmd_output)); - if (!message || !*message || sscanf(message, "%d", &speed) < 1) { + if (!message || !*message || sscanf(message, "%6hd", &speed) < 1) { sprintf(atcmd_output, msg_txt(sd,918), MIN_WALK_SPEED, MAX_WALK_SPEED); // Please enter a speed value (usage: @speed <%d-%d>). clif_displaymessage(fd, atcmd_output); return -1; @@ -933,7 +933,7 @@ ACMD_FUNC(option) int param1 = 0, param2 = 0, param3 = 0; nullpo_retr(-1, sd); - if (!message || !*message || sscanf(message, "%d %d %d", ¶m1, ¶m2, ¶m3) < 1 || param1 < 0 || param2 < 0 || param3 < 0) + if (!message || !*message || sscanf(message, "%11d %11d %11d", ¶m1, ¶m2, ¶m3) < 1 || param1 < 0 || param2 < 0 || param3 < 0) {// failed to match the parameters so inform the user of the options const char* text; @@ -1011,7 +1011,7 @@ ACMD_FUNC(jobchange) const char* text; nullpo_retr(-1, sd); - if (!message || !*message || sscanf(message, "%d %d", &job, &upper) < 1) { + if (!message || !*message || sscanf(message, "%11d %11d", &job, &upper) < 1) { int i; bool found = false; @@ -1118,7 +1118,7 @@ ACMD_FUNC(kami) else intif_broadcast(atcmd_output, strlen(atcmd_output) + 1, (*(command + 5) == 'b' || *(command + 5) == 'B') ? BC_BLUE : BC_DEFAULT); } else { - if(!message || !*message || (sscanf(message, "%lx %199[^\n]", &color, atcmd_output) < 2)) { + if(!message || !*message || (sscanf(message, "%20lx %199[^\n]", &color, atcmd_output) < 2)) { clif_displaymessage(fd, msg_txt(sd,981)); // Please enter color and message (usage: @kamic ). return -1; } @@ -1140,7 +1140,7 @@ ACMD_FUNC(heal) int hp = 0, sp = 0; // [Valaris] thanks to fov nullpo_retr(-1, sd); - sscanf(message, "%d %d", &hp, &sp); + sscanf(message, "%11d %11d", &hp, &sp); // TODO: Check should be done // some overflow checks if( hp == INT_MIN ) hp++; @@ -1211,8 +1211,8 @@ ACMD_FUNC(item) if (!strcmpi(parent_cmd,"itembound")) { if (!message || !*message || ( - sscanf(message, "\"%99[^\"]\" %d %d", item_name, &number, &bound) < 3 && - sscanf(message, "%99s %d %d", item_name, &number, &bound) < 3)) + sscanf(message, "\"%99[^\"]\" %11d %11d", item_name, &number, &bound) < 3 && + sscanf(message, "%99s %11d %11d", item_name, &number, &bound) < 3)) { clif_displaymessage(fd, msg_txt(sd,295)); // Please enter an item name or ID (usage: @item ). clif_displaymessage(fd, msg_txt(sd,298)); // Invalid bound type @@ -1223,8 +1223,8 @@ ACMD_FUNC(item) return -1; } } else if (!message || !*message || ( - sscanf(message, "\"%99[^\"]\" %d", item_name, &number) < 1 && - sscanf(message, "%99s %d", item_name, &number) < 1 + sscanf(message, "\"%99[^\"]\" %11d", item_name, &number) < 1 && + sscanf(message, "%99s %11d", item_name, &number) < 1 )) { clif_displaymessage(fd, msg_txt(sd,983)); // Please enter an item name or ID (usage: @item ). return -1; @@ -1288,8 +1288,8 @@ ACMD_FUNC(item2) if (!strcmpi(parent_cmd+1,"itembound2")) { if (!message || !*message || ( - sscanf(message, "\"%99[^\"]\" %d %d %d %d %d %d %d %d %d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4, &bound) < 10 && - sscanf(message, "%99s %d %d %d %d %d %d %d %d %d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4, &bound) < 10 )) + sscanf(message, "\"%99[^\"]\" %11d %11d %11d %11d %11d %11d %11d %11d %11d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4, &bound) < 10 && + sscanf(message, "%99s %11d %11d %11d %11d %11d %11d %11d %11d %11d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4, &bound) < 10 )) { clif_displaymessage(fd, msg_txt(sd,296)); // Please enter all parameters (usage: @item2 clif_displaymessage(fd, msg_txt(sd,297)); // ). @@ -1301,8 +1301,8 @@ ACMD_FUNC(item2) return -1; } } else if ( !message || !*message || ( - sscanf(message, "\"%99[^\"]\" %d %d %d %d %d %d %d %d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4) < 9 && - sscanf(message, "%99s %d %d %d %d %d %d %d %d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4) < 9 + sscanf(message, "\"%99[^\"]\" %11d %11d %11d %11d %11d %11d %11d %11d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4) < 9 && + sscanf(message, "%99s %11d %11d %11d %11d %11d %11d %11d %11d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4) < 9 )) { clif_displaymessage(fd, msg_txt(sd,984)); // Please enter all parameters (usage: @item2 clif_displaymessage(fd, msg_txt(sd,985)); // ). @@ -1703,7 +1703,7 @@ ACMD_FUNC(model) memset(atcmd_output, '\0', sizeof(atcmd_output)); - if (!message || !*message || sscanf(message, "%d %d %d", &hair_style, &hair_color, &cloth_color) < 1) { + if (!message || !*message || sscanf(message, "%11d %11d %11d", &hair_style, &hair_color, &cloth_color) < 1) { sprintf(atcmd_output, msg_txt(sd,991), // Please enter at least one value (usage: @model ). MIN_HAIR_STYLE, MAX_HAIR_STYLE, MIN_HAIR_COLOR, MAX_HAIR_COLOR, MIN_CLOTH_COLOR, MAX_CLOTH_COLOR); clif_displaymessage(fd, atcmd_output); @@ -1735,7 +1735,7 @@ ACMD_FUNC(dye) memset(atcmd_output, '\0', sizeof(atcmd_output)); - if (!message || !*message || sscanf(message, "%d", &cloth_color) < 1) { + if (!message || !*message || sscanf(message, "%11d", &cloth_color) < 1) { sprintf(atcmd_output, msg_txt(sd,992), MIN_CLOTH_COLOR, MAX_CLOTH_COLOR); // Please enter a clothes color (usage: @dye/@ccolor ). clif_displaymessage(fd, atcmd_output); return -1; @@ -1762,7 +1762,7 @@ ACMD_FUNC(hair_style) memset(atcmd_output, '\0', sizeof(atcmd_output)); - if (!message || !*message || sscanf(message, "%d", &hair_style) < 1) { + if (!message || !*message || sscanf(message, "%11d", &hair_style) < 1) { sprintf(atcmd_output, msg_txt(sd,993), MIN_HAIR_STYLE, MAX_HAIR_STYLE); // Please enter a hair style (usage: @hairstyle/@hstyle ). clif_displaymessage(fd, atcmd_output); return -1; @@ -1789,7 +1789,7 @@ ACMD_FUNC(hair_color) memset(atcmd_output, '\0', sizeof(atcmd_output)); - if (!message || !*message || sscanf(message, "%d", &hair_color) < 1) { + if (!message || !*message || sscanf(message, "%11d", &hair_color) < 1) { sprintf(atcmd_output, msg_txt(sd,994), MIN_HAIR_COLOR, MAX_HAIR_COLOR); // Please enter a hair color (usage: @haircolor/@hcolor ). clif_displaymessage(fd, atcmd_output); return -1; @@ -2030,14 +2030,14 @@ ACMD_FUNC(monster) clif_displaymessage(fd, msg_txt(sd,80)); // Give the display name or monster name/id please. return -1; } - if (sscanf(message, "\"%23[^\"]\" %23s %d", name, monster, &number) > 1 || - sscanf(message, "%23s \"%23[^\"]\" %d", monster, name, &number) > 1) { + if (sscanf(message, "\"%23[^\"]\" %23s %11d", name, monster, &number) > 1 || + sscanf(message, "%23s \"%23[^\"]\" %11d", monster, name, &number) > 1) { //All data can be left as it is. - } else if ((count=sscanf(message, "%23s %d %23s", monster, &number, name)) > 1) { + } else if ((count=sscanf(message, "%23s %11d %23s", monster, &number, name)) > 1) { //Here, it is possible name was not given and we are using monster for it. if (count < 3) //Blank mob's name. name[0] = '\0'; - } else if (sscanf(message, "%23s %23s %d", name, monster, &number) > 1) { + } else if (sscanf(message, "%23s %23s %11d", name, monster, &number) > 1) { //All data can be left as it is. } else if (sscanf(message, "%23s", monster) > 0) { //As before, name may be already filled. @@ -2167,7 +2167,7 @@ ACMD_FUNC(refine) memset(atcmd_output, '\0', sizeof(atcmd_output)); - if (!message || !*message || sscanf(message, "%d %d", &position, &refine) < 2) { + if (!message || !*message || sscanf(message, "%11d %11d", &position, &refine) < 2) { clif_displaymessage(fd, msg_txt(sd,996)); // Please enter a position and an amount (usage: @refine <+/- amount>). sprintf(atcmd_output, msg_txt(sd,997), EQP_HEAD_LOW); // %d: Lower Headgear clif_displaymessage(fd, atcmd_output); @@ -2249,8 +2249,8 @@ ACMD_FUNC(produce) memset(item_name, '\0', sizeof(item_name)); if (!message || !*message || ( - sscanf(message, "\"%99[^\"]\" %d %d", item_name, &attribute, &star) < 1 && - sscanf(message, "%99s %d %d", item_name, &attribute, &star) < 1 + sscanf(message, "\"%99[^\"]\" %11d %11d", item_name, &attribute, &star) < 1 && + sscanf(message, "%99s %11d %11d", item_name, &attribute, &star) < 1 )) { clif_displaymessage(fd, msg_txt(sd,1007)); // Please enter at least one item name/ID (usage: @produce <# of very's>). return -1; @@ -2303,7 +2303,7 @@ ACMD_FUNC(memo) memset(atcmd_output, '\0', sizeof(atcmd_output)); - if( !message || !*message || sscanf(message, "%d", &position) < 1 ) + if( !message || !*message || sscanf(message, "%11d", &position) < 1 ) { int i; clif_displaymessage(sd->fd, msg_txt(sd,668)); @@ -2361,7 +2361,7 @@ ACMD_FUNC(displaystatus) int i, type, flag, tick, val1 = 0, val2 = 0, val3 = 0; nullpo_retr(-1, sd); - if (!message || !*message || (i = sscanf(message, "%d %d %d %d %d %d", &type, &flag, &tick, &val1, &val2, &val3)) < 1) { + if (!message || !*message || (i = sscanf(message, "%11d %11d %11d %11d %11d %11d", &type, &flag, &tick, &val1, &val2, &val3)) < 1) { clif_displaymessage(fd, msg_txt(sd,1009)); // Please enter a status type/flag (usage: @displaystatus { { {}}}). return -1; } @@ -2510,7 +2510,7 @@ ACMD_FUNC(param) memset(atcmd_output, '\0', sizeof(atcmd_output)); - if (!message || !*message || sscanf(message, "%d", &value) < 1 || value == 0) { + if (!message || !*message || sscanf(message, "%11d", &value) < 1 || value == 0) { clif_displaymessage(fd, msg_txt(sd,1013)); // Please enter a valid value (usage: @str/@agi/@vit/@int/@dex/@luk <+/-adjustment>). return -1; } @@ -2582,7 +2582,7 @@ ACMD_FUNC(stat_all) status[4] = &sd->status.dex; status[5] = &sd->status.luk; - if (!message || !*message || sscanf(message, "%d", &value) < 1 || value == 0) { + if (!message || !*message || sscanf(message, "%11d", &value) < 1 || value == 0) { max_status[0] = pc_maxparameter(sd,PARAM_STR); max_status[1] = pc_maxparameter(sd,PARAM_AGI); max_status[2] = pc_maxparameter(sd,PARAM_VIT); @@ -2644,7 +2644,7 @@ ACMD_FUNC(guildlevelup) { struct guild *guild_info; nullpo_retr(-1, sd); - if (!message || !*message || sscanf(message, "%d", &level) < 1 || level == 0) { + if (!message || !*message || sscanf(message, "%11d", &level) < 1 || level == 0) { clif_displaymessage(fd, msg_txt(sd,1014)); // Please enter a valid level (usage: @guildlvup/@guildlvlup <# of levels>). return -1; } @@ -3886,7 +3886,7 @@ ACMD_FUNC(mapinfo) { memset(mapname, '\0', sizeof(mapname)); memset(direction, '\0', sizeof(direction)); - sscanf(message, "%d %23[^\n]", &list, mapname); + sscanf(message, "%11d %23[^\n]", &list, mapname); if (list < 0 || list > 3) { clif_displaymessage(fd, msg_txt(sd,1038)); // Please enter at least one valid list number (usage: @mapinfo <0-3> ). @@ -5136,7 +5136,7 @@ ACMD_FUNC(effect) int type = 0, flag = 0; nullpo_retr(-1, sd); - if (!message || !*message || sscanf(message, "%d", &type) < 1) { + if (!message || !*message || sscanf(message, "%11d", &type) < 1) { clif_displaymessage(fd, msg_txt(sd,1152)); // Please enter an effect number (usage: @effect ). return -1; } @@ -5212,12 +5212,12 @@ ACMD_FUNC(skilloff) *------------------------------------------*/ ACMD_FUNC(npcmove) { - int x = 0, y = 0, m; + short x = 0, y = 0, m; struct npc_data *nd = 0; nullpo_retr(-1, sd); memset(atcmd_player_name, '\0', sizeof atcmd_player_name); - if (!message || !*message || sscanf(message, "%d %d %23[^\n]", &x, &y, atcmd_player_name) < 3) { + if (!message || !*message || sscanf(message, "%6hd %6hd %23[^\n]", &x, &y, atcmd_player_name) < 3) { clif_displaymessage(fd, msg_txt(sd,1153)); // Usage: @npcmove return -1; } @@ -5250,15 +5250,15 @@ ACMD_FUNC(npcmove) *------------------------------------------*/ ACMD_FUNC(addwarp) { - char mapname[32], warpname[NAME_LENGTH+1]; - int x,y; + char mapname[32], warpname[NAME_LENGTH+1]; // TODO: Check why this does not use MAP_NAME_LENGTH_EXT + short x,y; unsigned short m; struct npc_data* nd; nullpo_retr(-1, sd); memset(warpname, '\0', sizeof(warpname)); - if (!message || !*message || sscanf(message, "%31s %d %d %23[^\n]", mapname, &x, &y, warpname) < 4) { + if (!message || !*message || sscanf(message, "%31s %6hd %6hd %23[^\n]", mapname, &x, &y, warpname) < 4) { clif_displaymessage(fd, msg_txt(sd,1156)); // Usage: @addwarp return -1; } @@ -5539,7 +5539,7 @@ ACMD_FUNC(useskill) char target[100]; nullpo_retr(-1, sd); - if(!message || !*message || sscanf(message, "%hu %hu %23[^\n]", &skill_id, &skill_lv, target) != 3) { + if(!message || !*message || sscanf(message, "%6hu %6hu %23[^\n]", &skill_id, &skill_lv, target) != 3) { clif_displaymessage(fd, msg_txt(sd,1165)); // Usage: @useskill return -1; } @@ -5583,7 +5583,7 @@ ACMD_FUNC(displayskill) uint16 skill_lv = 1; nullpo_retr(-1, sd); - if (!message || !*message || sscanf(message, "%hu %hu", &skill_id, &skill_lv) < 1) + if (!message || !*message || sscanf(message, "%6hu %6hu", &skill_id, &skill_lv) < 1) { clif_displaymessage(fd, msg_txt(sd,1166)); // Usage: @displayskill {} return -1; @@ -5609,7 +5609,7 @@ ACMD_FUNC(skilltree) struct skill_tree_entry *ent; nullpo_retr(-1, sd); - if(!message || !*message || sscanf(message, "%hu %23[^\r\n]", &skill_id, target) != 2) { + if(!message || !*message || sscanf(message, "%6hu %23[^\r\n]", &skill_id, target) != 2) { clif_displaymessage(fd, msg_txt(sd,1167)); // Usage: @skilltree return -1; } @@ -5733,7 +5733,7 @@ ACMD_FUNC(changelook) int i, j = 0, k = 0; int pos[7] = { LOOK_HEAD_TOP,LOOK_HEAD_MID,LOOK_HEAD_BOTTOM,LOOK_WEAPON,LOOK_SHIELD,LOOK_SHOES,LOOK_ROBE }; - if((i = sscanf(message, "%d %d", &j, &k)) < 1) { + if((i = sscanf(message, "%11d %11d", &j, &k)) < 1) { clif_displaymessage(fd, msg_txt(sd,1177)); // Usage: @changelook {} clif_displaymessage(fd, msg_txt(sd,1178)); // Position: 1-Top 2-Middle 3-Bottom 4-Weapon 5-Shield 6-Shoes 7-Robe return -1; @@ -6407,15 +6407,15 @@ ACMD_FUNC(cleanmap) ACMD_FUNC(cleanarea) { - int x0 = 0, y0 = 0, x1 = 0, y1 = 0; + short x0 = 0, y0 = 0, x1 = 0, y1 = 0; - if (!message || !*message || sscanf(message, "%d %d %d %d", &x0, &y0, &x1, &y1) < 1) { + if (!message || !*message || sscanf(message, "%6hd %6hd %6hd %6hd", &x0, &y0, &x1, &y1) < 1) { map_foreachinarea(atcommand_cleanfloor_sub, sd->bl.m, sd->bl.x - (AREA_SIZE * 2), sd->bl.y - (AREA_SIZE * 2), sd->bl.x + (AREA_SIZE * 2), sd->bl.y + (AREA_SIZE * 2), BL_ITEM); } - else if (sscanf(message, "%d %d %d %d", &x0, &y0, &x1, &y1) == 1) { + else if (sscanf(message, "%6hd %6hd %6hd %6hd", &x0, &y0, &x1, &y1) == 1) { map_foreachinarea(atcommand_cleanfloor_sub, sd->bl.m, sd->bl.x - x0, sd->bl.y - x0, sd->bl.x + x0, sd->bl.y + x0, BL_ITEM); } - else if (sscanf(message, "%d %d %d %d", &x0, &y0, &x1, &y1) == 4) { + else if (sscanf(message, "%6hd %6hd %6hd %6hd", &x0, &y0, &x1, &y1) == 4) { map_foreachinarea(atcommand_cleanfloor_sub, sd->bl.m, x0, y0, x1, y1, BL_ITEM); } @@ -6444,7 +6444,7 @@ ACMD_FUNC(npctalk) } } else { - if (!message || !*message || sscanf(message, "%lx %23[^,], %99[^\n]", &color, name, mes) < 3) { + if (!message || !*message || sscanf(message, "%16lx %23[^,], %99[^\n]", &color, name, mes) < 3) { clif_displaymessage(fd, msg_txt(sd,1223)); // Please enter the correct parameters (usage: @npctalkc , ). return -1; } @@ -6597,7 +6597,7 @@ ACMD_FUNC(summon) nullpo_retr(-1, sd); - if (!message || !*message || sscanf(message, "%23s %d", name, &duration) < 1) + if (!message || !*message || sscanf(message, "%23s %11d", name, &duration) < 1) { clif_displaymessage(fd, msg_txt(sd,1225)); // Please enter a monster name (usage: @summon {duration}). return -1; @@ -6643,7 +6643,7 @@ ACMD_FUNC(adjgroup) int new_group = 0; nullpo_retr(-1, sd); - if (!message || !*message || sscanf(message, "%d", &new_group) != 1) { + if (!message || !*message || sscanf(message, "%11d", &new_group) != 1) { clif_displaymessage(fd, msg_txt(sd,1226)); // Usage: @adjgroup return -1; } @@ -6788,7 +6788,7 @@ ACMD_FUNC(mute) int manner; nullpo_retr(-1, sd); - if (!message || !*message || sscanf(message, "%d %23[^\n]", &manner, atcmd_player_name) < 1) { + if (!message || !*message || sscanf(message, "%11d %23[^\n]", &manner, atcmd_player_name) < 1) { clif_displaymessage(fd, msg_txt(sd,1237)); // Usage: @mute