fixed the longstanding myids memory leak
authorAndreas Steffen <andreas.steffen@strongswan.org>
Thu, 16 Apr 2009 09:11:49 +0000 (09:11 -0000)
committerAndreas Steffen <andreas.steffen@strongswan.org>
Thu, 16 Apr 2009 09:11:49 +0000 (09:11 -0000)
src/pluto/id.c
src/pluto/id.h
src/pluto/plutomain.c

index c21bab7..5bbf531 100644 (file)
@@ -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)
 {
index 02fb23f..634c97e 100644 (file)
@@ -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 */
 };
 
index e46cd95..e497aa0 100644 (file)
@@ -707,6 +707,7 @@ exit_pluto(int status)
     stop_adns();
     free_md_pool();
     free_crypto();
+    free_id();
     delete_lock();
        library_deinit();
     close_log();