Module Name: src
Committed By: tteras
Date: Mon Apr 20 13:17:35 UTC 2009
Modified Files:
src/crypto/dist/ipsec-tools/src/racoon: nattraversal.c
Log Message:
Fix a memory leak in nat-t keepalive code.
To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 \
src/crypto/dist/ipsec-tools/src/racoon/nattraversal.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/crypto/dist/ipsec-tools/src/racoon/nattraversal.c
diff -u src/crypto/dist/ipsec-tools/src/racoon/nattraversal.c:1.9 src/crypto/dist/ipsec-tools/src/racoon/nattraversal.c:1.10
--- src/crypto/dist/ipsec-tools/src/racoon/nattraversal.c:1.9 Thu Mar 12 10:57:26 2009
+++ src/crypto/dist/ipsec-tools/src/racoon/nattraversal.c Mon Apr 20 13:17:35 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: nattraversal.c,v 1.9 2009/03/12 10:57:26 tteras Exp $ */
+/* $NetBSD: nattraversal.c,v 1.10 2009/04/20 13:17:35 tteras Exp $ */
/*
* Copyright (C) 2004 SuSE Linux AG, Nuernberg, Germany.
@@ -325,6 +325,15 @@
iph1->natt_flags |= NAT_ANNOUNCED;
}
+static void
+natt_keepalive_delete (struct natt_ka_addrs *ka)
+{
+ TAILQ_REMOVE (&ka_tree, ka, chain);
+ racoon_free (ka->src);
+ racoon_free (ka->dst);
+ racoon_free (ka);
+}
+
/* NAT keepalive functions */
static void
natt_keepalive_send (struct sched *param)
@@ -339,8 +348,7 @@
s = myaddr_getfd(ka->src);
if (s == -1) {
- TAILQ_REMOVE (&ka_tree, ka, chain);
- racoon_free (ka);
+ natt_keepalive_delete(ka);
continue;
}
plog (LLV_DEBUG, LOCATION, NULL, "KA: %s\n",
@@ -441,8 +449,7 @@
plog (LLV_DEBUG, LOCATION, NULL, "KA removing this one...\n");
- TAILQ_REMOVE (&ka_tree, ka, chain);
- racoon_free (ka);
+ natt_keepalive_delete (ka);
/* Should we break here? Every pair of addresses should
be inserted only once, but who knows :-) Lets traverse
the whole list... */