From af8ab6861d01706a1c8295c6fe5751aaa84b5104 Mon Sep 17 00:00:00 2001 From: Andreas Steffen Date: Thu, 16 Apr 2009 09:11:49 +0000 Subject: [PATCH] fixed the longstanding myids memory leak --- src/pluto/id.c | 15 +++++++++++++++ src/pluto/id.h | 4 ++-- src/pluto/plutomain.c | 1 + 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/pluto/id.c b/src/pluto/id.c index c21bab7b2..5bbf5312d 100644 --- a/src/pluto/id.c +++ b/src/pluto/id.c @@ -66,6 +66,21 @@ init_id(void) set_myFQDN(); } +/* + * free id module + */ +void +free_id(void) +{ + enum myid_state s; + + for (s = MYID_UNKNOWN; s <= MYID_SPECIFIED; s++) + { + free_id_content(&myids[s]); + free(myid_str[s]); + } +} + static void calc_myid_str(enum myid_state s) { diff --git a/src/pluto/id.h b/src/pluto/id.h index 02fb23f96..634c97ee6 100644 --- a/src/pluto/id.h +++ b/src/pluto/id.h @@ -27,13 +27,13 @@ struct id { }; extern void init_id(void); - +extern void free_id(void); extern const struct id empty_id; /* ID_NONE */ enum myid_state { MYID_UNKNOWN, /* not yet figured out */ MYID_HOSTNAME, /* our current hostname */ - MYID_IP, /* our default IP address */ + MYID_IP, /* our default IP address */ MYID_SPECIFIED /* as specified by ipsec.conf */ }; diff --git a/src/pluto/plutomain.c b/src/pluto/plutomain.c index e46cd9512..e497aa02e 100644 --- a/src/pluto/plutomain.c +++ b/src/pluto/plutomain.c @@ -707,6 +707,7 @@ exit_pluto(int status) stop_adns(); free_md_pool(); free_crypto(); + free_id(); delete_lock(); library_deinit(); close_log();