From 1ea16746b1330656e152278a7192e5b7adef0539 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 17 Jan 2015 22:36:52 +0300 Subject: Add some fixes to char server. Found by coverity scan. --- src/char/char.c | 2 +- src/char/geoip.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/char/char.c b/src/char/char.c index 1d9d1d65c..f1bacbeb3 100644 --- a/src/char/char.c +++ b/src/char/char.c @@ -1461,7 +1461,7 @@ bool char_char_slotchange(struct char_session_data *sd, int fd, unsigned short f struct mmo_charstatus char_dat; int from_id = 0; - if( from > MAX_CHARS || to > MAX_CHARS || ( sd->char_slots && to > sd->char_slots ) || sd->found_char[from] <= 0 ) + if( from >= MAX_CHARS || to >= MAX_CHARS || ( sd->char_slots && to > sd->char_slots ) || sd->found_char[from] <= 0 ) return false; if( !chr->mmo_char_fromsql(sd->found_char[from], &char_dat, false) ) // Only the short data is needed. diff --git a/src/char/geoip.c b/src/char/geoip.c index 4fe03ab07..e5b77af1f 100644 --- a/src/char/geoip.c +++ b/src/char/geoip.c @@ -78,7 +78,7 @@ const char* geoip_getcountry(uint32 ipnum) if (x >= GEOIP_COUNTRY_BEGIN) { x = x-GEOIP_COUNTRY_BEGIN; - if( x > GEOIP_MAX_COUNTRIES ) + if( x >= GEOIP_MAX_COUNTRIES ) return geoip_countryname[0]; return geoip_countryname[x]; @@ -133,6 +133,7 @@ void geoip_init(void) fno = fileno(db); if (fstat(fno, &bufa) < 0) { ShowError("geoip_readdb: Error stating GeoIP.dat! Error %d\n", errno); + fclose(db); geoip->final(false); return; } -- cgit v1.2.3-60-g2f50 From 3bf50615cd8a85bec21d0dab1ecf39a26c0e104b Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 17 Jan 2015 22:37:31 +0300 Subject: Fix out of bound issue in mapindex.c. Found by coverity scan. --- src/common/mapindex.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/common/mapindex.c b/src/common/mapindex.c index 0d8a69726..79125e010 100644 --- a/src/common/mapindex.c +++ b/src/common/mapindex.c @@ -126,7 +126,7 @@ unsigned short mapindex_name2id(const char* name) { } const char* mapindex_id2name_sub(unsigned short id,const char *file, int line, const char *func) { - if (id > MAX_MAPINDEX || !mapindex_exists(id)) { + if (id >= MAX_MAPINDEX || !mapindex_exists(id)) { ShowDebug("mapindex_id2name: Requested name for non-existant map index [%d] in cache. %s:%s:%d\n", id,file,func,line); return mapindex->list[0].name; // dummy empty string so that the callee doesn't crash } -- cgit v1.2.3-60-g2f50