From 3a194659cf80960bacc277683daae00de2c2609e Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 21 Jun 2015 21:29:03 +0300 Subject: Add missing checks into login.c Also add some NONNULL attributes for known non null parameters. --- src/login/login.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/login/login.c b/src/login/login.c index 1fdf2d198..bb8ba51b3 100644 --- a/src/login/login.c +++ b/src/login/login.c @@ -1230,15 +1230,15 @@ void login_kick(struct login_session_data* sd) void login_auth_ok(struct login_session_data* sd) { - int fd = sd->fd; + int fd = 0; uint32 ip; - uint8 server_num, n; uint32 subnet_char_ip; struct login_auth_node* node; int i; nullpo_retv(sd); + fd = sd->fd; ip = session[fd]->client_addr; if( runflag != LOGINSERVER_ST_RUNNING ) { @@ -1431,11 +1431,13 @@ void login_login_error(int fd, uint8 status) WFIFOSET(fd,23); } +void login_parse_ping(int fd, struct login_session_data* sd) __attribute__((nonnull (2))); void login_parse_ping(int fd, struct login_session_data* sd) { RFIFOSKIP(fd,26); } +void login_parse_client_md5(int fd, struct login_session_data* sd) __attribute__((nonnull (2))); void login_parse_client_md5(int fd, struct login_session_data* sd) { sd->has_client_hash = 1; @@ -1444,6 +1446,7 @@ void login_parse_client_md5(int fd, struct login_session_data* sd) RFIFOSKIP(fd,18); } +bool login_parse_client_login(int fd, struct login_session_data* sd, const char *const ip) __attribute__((nonnull (2))); bool login_parse_client_login(int fd, struct login_session_data* sd, const char *const ip) { uint32 version; @@ -1523,6 +1526,7 @@ bool login_parse_client_login(int fd, struct login_session_data* sd, const char return false; } +void login_send_coding_key(int fd, struct login_session_data* sd) __attribute__((nonnull (2))); void login_send_coding_key(int fd, struct login_session_data* sd) { WFIFOHEAD(fd,4 + sd->md5keylen); @@ -1532,6 +1536,7 @@ void login_send_coding_key(int fd, struct login_session_data* sd) WFIFOSET(fd,WFIFOW(fd,2)); } +void login_parse_request_coding_key(int fd, struct login_session_data* sd) __attribute__((nonnull (2))); void login_parse_request_coding_key(int fd, struct login_session_data* sd) { memset(sd->md5key, '\0', sizeof(sd->md5key)); @@ -1541,6 +1546,7 @@ void login_parse_request_coding_key(int fd, struct login_session_data* sd) login->send_coding_key(fd, sd); } +void login_char_server_connection_status(int fd, struct login_session_data* sd, uint8 status) __attribute__((nonnull (2))); void login_char_server_connection_status(int fd, struct login_session_data* sd, uint8 status) { WFIFOHEAD(fd,3); @@ -1549,6 +1555,7 @@ void login_char_server_connection_status(int fd, struct login_session_data* sd, WFIFOSET(fd,3); } +void login_parse_request_connection(int fd, struct login_session_data* sd, const char *const ip) __attribute__((nonnull (2, 3))); void login_parse_request_connection(int fd, struct login_session_data* sd, const char *const ip) { char server_name[20]; -- cgit v1.2.3-60-g2f50 From f6e39b6c2506934d98afb3956efffaf768d2551f Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 21 Jun 2015 21:44:28 +0300 Subject: Add missing checks to account_sql.c. --- src/login/account_sql.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/login/account_sql.c b/src/login/account_sql.c index 3f72e6867..37837fc35 100644 --- a/src/login/account_sql.c +++ b/src/login/account_sql.c @@ -363,12 +363,13 @@ static bool account_db_sql_set_property(AccountDB* self, const char* key, const static bool account_db_sql_create(AccountDB* self, struct mmo_account* acc) { AccountDB_SQL* db = (AccountDB_SQL*)self; - Sql* sql_handle = db->accounts; + Sql* sql_handle; // decide on the account id to assign int account_id; nullpo_ret(db); nullpo_ret(acc); + sql_handle = db->accounts; if( acc->account_id != -1 ) {// caller specifies it manually account_id = acc->account_id; @@ -416,10 +417,11 @@ static bool account_db_sql_create(AccountDB* self, struct mmo_account* acc) static bool account_db_sql_remove(AccountDB* self, const int account_id) { AccountDB_SQL* db = (AccountDB_SQL*)self; - Sql* sql_handle = db->accounts; + Sql* sql_handle; bool result = false; nullpo_ret(db); + sql_handle = db->accounts; if( SQL_SUCCESS != SQL->QueryStr(sql_handle, "START TRANSACTION") || SQL_SUCCESS != SQL->Query(sql_handle, "DELETE FROM `%s` WHERE `account_id` = %d", db->account_db, account_id) || SQL_SUCCESS != SQL->Query(sql_handle, "DELETE FROM `%s` WHERE `account_id` = %d", db->global_acc_reg_num_db, account_id) @@ -607,6 +609,7 @@ static bool mmo_auth_tosql(AccountDB_SQL* db, const struct mmo_account* acc, boo bool result = false; nullpo_ret(db); + nullpo_ret(acc); sql_handle = db->accounts; stmt = SQL->StmtMalloc(sql_handle); @@ -687,11 +690,12 @@ Sql* account_db_sql_up(AccountDB* self) { return db ? db->accounts : NULL; } void mmo_save_accreg2(AccountDB* self, int fd, int account_id, int char_id) { - Sql* sql_handle = ((AccountDB_SQL*)self)->accounts; + Sql* sql_handle; AccountDB_SQL* db = (AccountDB_SQL*)self; int count = RFIFOW(fd, 12); nullpo_retv(db); + sql_handle = db->accounts; if (count) { int cursor = 14, i; char key[32], sval[254]; @@ -742,7 +746,7 @@ void mmo_send_accreg2(AccountDB* self, int fd, int account_id, int char_id) { size_t len; nullpo_retv(db); - sql_handle = ((AccountDB_SQL*)self)->accounts; + sql_handle = db->accounts; if( SQL_ERROR == SQL->Query(sql_handle, "SELECT `key`, `index`, `value` FROM `%s` WHERE `account_id`='%d'", db->global_acc_reg_str_db, account_id) ) Sql_ShowDebug(sql_handle); -- cgit v1.2.3-60-g2f50 From b885110e0110048c1bcfd01d248436b797f7cb6b Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 21 Jun 2015 22:11:31 +0300 Subject: Add missing check and NONNULL attributes to char.c. --- src/char/char.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/char/char.c b/src/char/char.c index 5e3c34684..5f5dad539 100644 --- a/src/char/char.c +++ b/src/char/char.c @@ -850,6 +850,7 @@ int char_inventory_to_sql(const struct item items[], int max, int id) { bool found; int errors = 0; + nullpo_ret(items); // The following code compares inventory with current database values // and performs modification/deletion/insertion only on relevant rows. @@ -1479,6 +1480,7 @@ bool char_char_slotchange(struct char_session_data *sd, int fd, unsigned short f struct mmo_charstatus char_dat; int from_id = 0; + nullpo_ret(sd); if( from >= MAX_CHARS || to >= MAX_CHARS || ( sd->char_slots && to > sd->char_slots ) || sd->found_char[from] <= 0 ) return false; @@ -1649,6 +1651,8 @@ int char_make_new_char_sql(struct char_session_data* sd, char* name_, int str, i char esc_name[NAME_LENGTH*2+1]; int char_id, flag, k, l; + nullpo_retr(-2, sd); + nullpo_retr(-2, name_); safestrncpy(name, name_, NAME_LENGTH); normalize_name(name,TRIM_CHARS); SQL->EscapeStringLen(inter->sql_handle, esc_name, name, strnlen(name, NAME_LENGTH)); @@ -4256,6 +4260,7 @@ static void char_delete2_req(int fd, struct char_session_data* sd) time_t delete_date; char_id = RFIFOL(fd,2); + nullpo_retv(sd); ARR_FIND( 0, MAX_CHARS, i, sd->found_char[i] == char_id ); if( i == MAX_CHARS ) @@ -4327,6 +4332,7 @@ static void char_delete2_accept(int fd, struct char_session_data* sd) char* data; time_t delete_date; + nullpo_retv(sd); char_id = RFIFOL(fd,2); ShowInfo(CL_RED"Request Char Deletion: "CL_GREEN"%d (%d)"CL_RESET"\n", sd->account_id, char_id); @@ -4394,6 +4400,7 @@ static void char_delete2_cancel(int fd, struct char_session_data* sd) {// CH: <082b>.W .L int char_id, i; + nullpo_retv(sd); char_id = RFIFOL(fd,2); ARR_FIND( 0, MAX_CHARS, i, sd->found_char[i] == char_id ); @@ -4542,6 +4549,7 @@ int char_search_default_maps_mapserver(struct mmo_charstatus *cd) return i; } +void char_parse_char_select(int fd, struct char_session_data* sd, uint32 ipl) __attribute__((nonnull (2))); void char_parse_char_select(int fd, struct char_session_data* sd, uint32 ipl) { struct mmo_charstatus char_dat; @@ -4706,6 +4714,7 @@ void char_creation_ok(int fd, struct mmo_charstatus *char_dat) WFIFOSET(fd,len); } +void char_parse_char_create_new_char(int fd, struct char_session_data* sd) __attribute__((nonnull (2))); void char_parse_char_create_new_char(int fd, struct char_session_data* sd) { int result; @@ -4756,6 +4765,7 @@ void char_delete_char_ok(int fd) WFIFOSET(fd,2); } +void char_parse_char_delete_char(int fd, struct char_session_data* sd, unsigned short cmd) __attribute__((nonnull (2))); void char_parse_char_delete_char(int fd, struct char_session_data* sd, unsigned short cmd) { char email[40]; @@ -4823,6 +4833,7 @@ void char_allow_rename(int fd, int flag) WFIFOSET(fd,4); } +void char_parse_char_rename_char(int fd, struct char_session_data* sd) __attribute__((nonnull (2))); void char_parse_char_rename_char(int fd, struct char_session_data* sd) { int i, cid =RFIFOL(fd,2); @@ -4847,6 +4858,7 @@ void char_parse_char_rename_char(int fd, struct char_session_data* sd) chr->allow_rename(fd, i); } +void char_parse_char_rename_char2(int fd, struct char_session_data* sd) __attribute__((nonnull (2))); void char_parse_char_rename_char2(int fd, struct char_session_data* sd) { int i, aid = RFIFOL(fd,2), cid =RFIFOL(fd,6); @@ -4882,6 +4894,7 @@ void char_rename_char_ack(int fd, int flag) WFIFOSET(fd,4); } +void char_parse_char_rename_char_confirm(int fd, struct char_session_data* sd) __attribute__((nonnull (2))); void char_parse_char_rename_char_confirm(int fd, struct char_session_data* sd) { int i; @@ -4977,6 +4990,7 @@ void char_parse_char_login_map_server(int fd) RFIFOSKIP(fd,60); } +void char_parse_char_pincode_check(int fd, struct char_session_data* sd) __attribute__((nonnull (2))); void char_parse_char_pincode_check(int fd, struct char_session_data* sd) { if (RFIFOL(fd,2) == sd->account_id) @@ -4985,6 +4999,7 @@ void char_parse_char_pincode_check(int fd, struct char_session_data* sd) RFIFOSKIP(fd, 10); } +void char_parse_char_pincode_window(int fd, struct char_session_data* sd) __attribute__((nonnull (2))); void char_parse_char_pincode_window(int fd, struct char_session_data* sd) { if (RFIFOL(fd,2) == sd->account_id) @@ -4993,6 +5008,7 @@ void char_parse_char_pincode_window(int fd, struct char_session_data* sd) RFIFOSKIP(fd, 6); } +void char_parse_char_pincode_change(int fd, struct char_session_data* sd) __attribute__((nonnull (2))); void char_parse_char_pincode_change(int fd, struct char_session_data* sd) { if (RFIFOL(fd,2) == sd->account_id) @@ -5001,6 +5017,7 @@ void char_parse_char_pincode_change(int fd, struct char_session_data* sd) RFIFOSKIP(fd, 14); } +void char_parse_char_pincode_first_pin(int fd, struct char_session_data* sd) __attribute__((nonnull (2))); void char_parse_char_pincode_first_pin(int fd, struct char_session_data* sd) { if (RFIFOL(fd,2) == sd->account_id) -- cgit v1.2.3-60-g2f50 From 58726366cecccc4cb44ec4978dc2620b54c5fb4f Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 21 Jun 2015 22:16:46 +0300 Subject: Add missing checks to pincode.c --- src/char/pincode.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/char/pincode.c b/src/char/pincode.c index 43958af8a..5085349cc 100644 --- a/src/char/pincode.c +++ b/src/char/pincode.c @@ -21,9 +21,10 @@ struct pincode_interface pincode_s; void pincode_handle (int fd, struct char_session_data* sd) { - struct online_char_data* character = (struct online_char_data*)idb_get(chr->online_char_db, sd->account_id); + struct online_char_data* character; nullpo_retv(sd); + character = (struct online_char_data*)idb_get(chr->online_char_db, sd->account_id); if( character && character->pincode_enable > pincode->charselect ){ character->pincode_enable = pincode->charselect * 2; }else{ -- cgit v1.2.3-60-g2f50 From 48bbaaab4f73b0eb4416898bed286bcb5393f9ec Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 30 Jun 2015 13:25:42 +0300 Subject: Remove useless checks from char server. --- src/char/int_guild.c | 1 - src/char/int_homun.c | 1 - src/char/int_mail.c | 1 - src/char/inter.c | 2 +- 4 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/char/int_guild.c b/src/char/int_guild.c index 96a78203f..24561fe21 100644 --- a/src/char/int_guild.c +++ b/src/char/int_guild.c @@ -882,7 +882,6 @@ int inter_guild_calcinfo(struct guild *g) int mapif_guild_created(int fd, int account_id, struct guild *g) { - nullpo_ret(g); WFIFOHEAD(fd, 10); WFIFOW(fd,0)=0x3830; WFIFOL(fd,2)=account_id; diff --git a/src/char/int_homun.c b/src/char/int_homun.c index 2ec589eaf..eda2afe69 100644 --- a/src/char/int_homun.c +++ b/src/char/int_homun.c @@ -54,7 +54,6 @@ void mapif_homunculus_deleted(int fd, int flag) void mapif_homunculus_loaded(int fd, int account_id, struct s_homunculus *hd) { - nullpo_retv(hd); WFIFOHEAD(fd, sizeof(struct s_homunculus)+9); WFIFOW(fd,0) = 0x3891; WFIFOW(fd,2) = sizeof(struct s_homunculus)+9; diff --git a/src/char/int_mail.c b/src/char/int_mail.c index 0d46339e0..d4bfe14e4 100644 --- a/src/char/int_mail.c +++ b/src/char/int_mail.c @@ -459,7 +459,6 @@ void inter_mail_sendmail(int send_id, const char* send_name, int dest_id, const nullpo_retv(dest_name); nullpo_retv(title); nullpo_retv(body); - nullpo_retv(item); memset(&msg, 0, sizeof(struct mail_message)); msg.send_id = send_id; diff --git a/src/char/inter.c b/src/char/inter.c index ca041d581..dbb782093 100644 --- a/src/char/inter.c +++ b/src/char/inter.c @@ -503,7 +503,7 @@ void mapif_parse_accinfo2(bool success, int map_fd, int u_fd, int u_aid, int acc inter->msg_to_fd(map_fd, u_fd, u_aid, "-- Account %d --", account_id); inter->msg_to_fd(map_fd, u_fd, u_aid, "User: %s | GM Group: %d | State: %d", userid, group_id, state); - if (user_pass && *user_pass != '\0') { /* password is only received if your gm level is greater than the one you're searching for */ + if (*user_pass != '\0') { /* password is only received if your gm level is greater than the one you're searching for */ if (pin_code && *pin_code != '\0') inter->msg_to_fd(map_fd, u_fd, u_aid, "Password: %s (PIN:%s)", user_pass, pin_code); else -- cgit v1.2.3-60-g2f50 From 245cab6b53ef3062608546a6fdb79af23f4e9780 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 30 Jun 2015 13:26:34 +0300 Subject: Remove useless checks from map server. --- src/map/battle.c | 6 +++--- src/map/clif.c | 2 +- src/map/skill.c | 2 +- src/map/status.c | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/map/battle.c b/src/map/battle.c index 8a834574b..3575dea6f 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -3627,7 +3627,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list } } #ifndef HMAP_ZONE_DAMAGE_CAP_TYPE - if( target && skill_id ) { + if (skill_id) { for(i = 0; i < map->list[target->m].zone->capped_skills_count; i++) { if( skill_id == map->list[target->m].zone->capped_skills[i]->nameid && (map->list[target->m].zone->capped_skills[i]->type & target->type) ) { if( target->type == BL_MOB && map->list[target->m].zone->capped_skills[i]->subtype != MZS_NONE ) { @@ -4101,7 +4101,7 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * } } #ifndef HMAP_ZONE_DAMAGE_CAP_TYPE - if( target && skill_id ) { + if (skill_id) { for(i = 0; i < map->list[target->m].zone->capped_skills_count; i++) { if( skill_id == map->list[target->m].zone->capped_skills[i]->nameid && (map->list[target->m].zone->capped_skills[i]->type & target->type) ) { if( target->type == BL_MOB && map->list[target->m].zone->capped_skills[i]->subtype != MZS_NONE ) { @@ -5314,7 +5314,7 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list if(skill_id == CR_GRANDCROSS || skill_id == NPC_GRANDDARKNESS) return wd; //Enough, rest is not needed. #ifndef HMAP_ZONE_DAMAGE_CAP_TYPE - if( target && skill_id ) { + if (skill_id) { for(i = 0; i < map->list[target->m].zone->capped_skills_count; i++) { if( skill_id == map->list[target->m].zone->capped_skills[i]->nameid && (map->list[target->m].zone->capped_skills[i]->type & target->type) ) { if( target->type == BL_MOB && map->list[target->m].zone->capped_skills[i]->subtype != MZS_NONE ) { diff --git a/src/map/clif.c b/src/map/clif.c index f01b59fda..5617c318b 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -12746,7 +12746,7 @@ bool clif_sub_guild_invite(int fd, struct map_session_data *sd, struct map_sessi return false; } - if ( t_sd && t_sd->state.noask ) {// @noask [LuzZza] + if (t_sd->state.noask) {// @noask [LuzZza] clif->noask_sub(sd, t_sd, 2); return false; } diff --git a/src/map/skill.c b/src/map/skill.c index 13cdeede3..3a69bf380 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -2714,7 +2714,7 @@ int skill_attack(int attack_type, struct block_list* src, struct block_list *dsr } /* monsters with skill lv higher than MAX_SKILL_LEVEL may get this value beyond the max depending on conditions, we cap to the system's limit */ - if( dsrc && dsrc->type == BL_MOB && skill_lv > MAX_SKILL_LEVEL && dmg.blewcount > 25 ) + if (dsrc->type == BL_MOB && skill_lv > MAX_SKILL_LEVEL && dmg.blewcount > 25) dmg.blewcount = 25; //blown-specific handling diff --git a/src/map/status.c b/src/map/status.c index dc4813055..d88bcf146 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -5145,7 +5145,7 @@ signed short status_calc_mdef2(struct block_list *bl, struct status_change *sc, if(sc->data[SC_MINDBREAKER]) mdef2 -= mdef2 * sc->data[SC_MINDBREAKER]->val3/100; #ifdef RENEWAL - if(sc && sc->data[SC_ASSUMPTIO]) + if (sc->data[SC_ASSUMPTIO]) mdef2 <<= 1; return (short)cap_value(mdef2,SHRT_MIN,SHRT_MAX); #else -- cgit v1.2.3-60-g2f50