diff options
author | panikon <panikon@zoho.com> | 2014-05-07 19:41:46 -0300 |
---|---|---|
committer | panikon <panikon@zoho.com> | 2014-05-07 19:41:46 -0300 |
commit | 095c47f5345f63da79495487ca58b7a21800fb6c (patch) | |
tree | cd3cd96f592e26782e9c627c6fb4d20a78077c35 | |
parent | acf4079c828a56c5ba761698b425168110d3722f (diff) | |
download | hercules-095c47f5345f63da79495487ca58b7a21800fb6c.tar.gz hercules-095c47f5345f63da79495487ca58b7a21800fb6c.tar.bz2 hercules-095c47f5345f63da79495487ca58b7a21800fb6c.tar.xz hercules-095c47f5345f63da79495487ca58b7a21800fb6c.zip |
Follow up to 9a425c1
Special thanks to @MishimaHaruna
-rw-r--r-- | src/char/int_guild.c | 2 | ||||
-rw-r--r-- | src/char/inter.c | 12 | ||||
-rw-r--r-- | src/map/clif.c | 2 | ||||
-rw-r--r-- | src/map/map.c | 3 |
4 files changed, 13 insertions, 6 deletions
diff --git a/src/char/int_guild.c b/src/char/int_guild.c index d8556f023..895cbbb94 100644 --- a/src/char/int_guild.c +++ b/src/char/int_guild.c @@ -1437,7 +1437,7 @@ int mapif_parse_GuildBasicInfoChange(int fd, int guild_id, int type, const void switch(type) { case GBI_EXP: value = *((const int16 *)data); - if( g->exp+value < 0 ) + if( value < 0 && abs(value) > g->exp ) return 0; g->exp += value; guild_calcinfo(g); diff --git a/src/char/inter.c b/src/char/inter.c index a2ff556d9..6cb349fd3 100644 --- a/src/char/inter.c +++ b/src/char/inter.c @@ -453,8 +453,10 @@ const char* geoip_getcountry(uint32 ipnum){ * frees geoip.cache **/ void geoip_final( void ) { - if( geoip.cache ) + if( geoip.cache ) { aFree(geoip.cache); + geoip.cache = NULL; + } if( geoip.active ) { ShowStatus("GeoIP "CL_RED"disabled"CL_RESET".\n"); @@ -497,14 +499,14 @@ void geoip_init(void) { } // Search database type - lseek(fno, -3l, SEEK_END); + fseek(db, -3l, SEEK_END); for( i = 0; i < GEOIP_STRUCTURE_INFO_MAX_SIZE; i++ ) { - read(fno, delim, 3); + fread(delim, sizeof(delim[0]), 3, db); if( delim[0] == 255 && delim[1] == 255 && delim[2] == 255 ) { - read(fno, &db_type, 1); + fread(&db_type, sizeof(db_type), 1, db); break; } else { - lseek(fno, -4l, SEEK_CUR); + fseek(db, -4l, SEEK_CUR); } } diff --git a/src/map/clif.c b/src/map/clif.c index 24dcfebf4..d3c4dd7f1 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -61,8 +61,10 @@ static struct packet_itemlist_equip itemlist_equip; static struct packet_storelist_normal storelist_normal; static struct packet_storelist_equip storelist_equip; static struct packet_viewequip_ack viewequip_list; +#if PACKETVER >= 20131223 static struct packet_npc_market_result_ack npcmarket_result; static struct packet_npc_market_open npcmarket_open; +#endif //#define DUMP_UNKNOWN_PACKET //#define DUMP_INVALID_PACKET diff --git a/src/map/map.c b/src/map/map.c index 11ef56cb3..461b9cf4e 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -2867,6 +2867,7 @@ char *map_init_mapcache(FILE *fp) { // Read file into buffer.. if(fread(buffer, sizeof(char), size, fp) != size) { ShowError("map_init_mapcache: Could not read entire mapcache file\n"); + aFree(buffer); return NULL; } @@ -2875,11 +2876,13 @@ char *map_init_mapcache(FILE *fp) { // Get main header to verify if data is corrupted if( fread(&header, sizeof(header), 1, fp) != 1 ) { ShowError("map_init_mapcache: Error obtaining main header!\n"); + aFree(buffer); return NULL; } ShowError("Map cache is corrupted!\r"); // If the file is totally corrupted this will allow us to warn the user if( GetULong((unsigned char *)&(header.file_size)) != size ) { ShowError("map_init_mapcache: Map cache is corrupted!\n"); + aFree(buffer); return NULL; } |