fixed the longstanding myids memory leak
[strongswan.git] / src / pluto / id.c
index 4e306d3..5bbf531 100644 (file)
@@ -11,7 +11,7 @@
  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * for more details.
  *
- * RCSID $Id: id.c,v 1.4 2005/08/15 20:07:08 as Exp $
+ * RCSID $Id$
  */
 
 #include <stdlib.h>
@@ -28,7 +28,7 @@
 #include <sys/queue.h>
 
 #include <freeswan.h>
-#include <freeswan/ipsec_policy.h>
+#include <ipsec_policy.h>
 
 #include "constants.h"
 #include "defs.h"
@@ -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)
 {
@@ -423,7 +438,7 @@ same_id(const struct id *a, const struct id *b)
 
     case ID_KEY_ID:
        return a->name.len == b->name.len
-           && memcmp(a->name.ptr, b->name.ptr, a->name.len) == 0;
+           && memeq(a->name.ptr, b->name.ptr, a->name.len);
 
     default:
        bad_case(a->kind);