From dd42b21b5942e1aa570ccefe458bc159271aa7be Mon Sep 17 00:00:00 2001 From: Michael Poole Date: Thu, 13 Dec 2007 22:01:04 -0500 Subject: [PATCH] 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. --- src/recdb.c | 2 ++ src/sar.c | 2 ++ src/saxdb.c | 1 + 3 files changed, 5 insertions(+) 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); -- 2.20.1