diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-01-17 22:36:52 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-01-18 01:47:52 +0300 |
commit | 1ea16746b1330656e152278a7192e5b7adef0539 (patch) | |
tree | ba39cd973386265febe75fbe831e161d0355b02b | |
parent | f0ea100d5ccc03d8f94b67ea9d3ffa82fcd937b1 (diff) | |
download | hercules-1ea16746b1330656e152278a7192e5b7adef0539.tar.gz hercules-1ea16746b1330656e152278a7192e5b7adef0539.tar.bz2 hercules-1ea16746b1330656e152278a7192e5b7adef0539.tar.xz hercules-1ea16746b1330656e152278a7192e5b7adef0539.zip |
Add some fixes to char server.
Found by coverity scan.
-rw-r--r-- | src/char/char.c | 2 | ||||
-rw-r--r-- | src/char/geoip.c | 3 |
2 files changed, 3 insertions, 2 deletions
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; } |