From: Michael Poole Date: Fri, 14 Dec 2007 03:01:04 +0000 (-0500) Subject: Fix some memory leaks. X-Git-Tag: v1.4.0-rc3~49 X-Git-Url: http://git.pk910.de/?p=srvx.git;a=commitdiff_plain;h=dd42b21b5942e1aa570ccefe458bc159271aa7be Fix some memory leaks. recdb.c (parse_database): Close recdb.f on all exit paths. sar.c (sar_cleanup): Free the string lists allocated inside config struct. saxdb.c (saxdb_read_db): Free the previous mondo_db (if any) at first read. --- diff --git a/src/recdb.c b/src/recdb.c index cba9813..262de7f 100644 --- a/src/recdb.c +++ b/src/recdb.c @@ -613,10 +613,12 @@ parse_database(const char *filename) if (fstat(fileno(recdb.f), &statinfo)) { log_module(MAIN_LOG, LOG_ERROR, "Unable to fstat database file '%s': %s", filename, strerror(errno)); + fclose(recdb.f); return NULL; } recdb.length = (size_t)statinfo.st_size; if (recdb.length == 0) { + fclose(recdb.f); return alloc_database(); } diff --git a/src/sar.c b/src/sar.c index 16d89a2..b563750 100644 --- a/src/sar.c +++ b/src/sar.c @@ -2010,6 +2010,8 @@ sar_cleanup(void) dict_delete(services_byport); dict_delete(sar_nameservers); dict_delete(sar_requests); + free_string_list(conf.sar_search); + free_string_list(conf.sar_nslist); } static void diff --git a/src/saxdb.c b/src/saxdb.c index 8de6649..c233775 100644 --- a/src/saxdb.c +++ b/src/saxdb.c @@ -58,6 +58,7 @@ saxdb_read_db(struct saxdb *db) { if (!data) return; if (db->writer == saxdb_mondo_writer) { + free_database(mondo_db); mondo_db = data; } else { db->reader(data);