aboutsummaryrefslogtreecommitdiffstats
path: root/main/ipsec-tools/03-list-foreach-fixes.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/ipsec-tools/03-list-foreach-fixes.patch')
-rw-r--r--main/ipsec-tools/03-list-foreach-fixes.patch59
1 files changed, 59 insertions, 0 deletions
diff --git a/main/ipsec-tools/03-list-foreach-fixes.patch b/main/ipsec-tools/03-list-foreach-fixes.patch
new file mode 100644
index 0000000000..9851b63ceb
--- /dev/null
+++ b/main/ipsec-tools/03-list-foreach-fixes.patch
@@ -0,0 +1,59 @@
+Please note that diffs are not public domain; they are subject to the
+copyright notices on the relevant files.
+
+===================================================================
+RCS file: /ftp/cvs/cvsroot/src/crypto/dist/ipsec-tools/src/racoon/handler.c,v
+retrieving revision 1.39
+retrieving revision 1.40
+diff -u -p -r1.39 -r1.40
+--- ipsec-tools/src/racoon/handler.c 2011/03/14 17:18:12 1.39
++++ ipsec-tools/src/racoon/handler.c 2011/11/17 14:41:55 1.40
+@@ -1,4 +1,4 @@
+-/* $NetBSD: handler.c,v 1.39 2011/03/14 17:18:12 tteras Exp $ */
++/* $NetBSD: handler.c,v 1.40 2011/11/17 14:41:55 vanhu Exp $ */
+
+ /* Id: handler.c,v 1.28 2006/05/26 12:17:29 manubsd Exp */
+
+@@ -611,9 +611,11 @@ getph2byid(src, dst, spid)
+ struct sockaddr *src, *dst;
+ u_int32_t spid;
+ {
+- struct ph2handle *p;
++ struct ph2handle *p, *next;
++
++ for (p = LIST_FIRST(&ph2tree); p; p = next) {
++ next = LIST_NEXT(p, chain);
+
+- LIST_FOREACH(p, &ph2tree, chain) {
+ if (spid == p->spid &&
+ cmpsaddr(src, p->src) <= CMPSADDR_WILDPORT_MATCH &&
+ cmpsaddr(dst, p->dst) <= CMPSADDR_WILDPORT_MATCH){
+@@ -985,9 +987,11 @@ void
+ remcontacted(remote)
+ struct sockaddr *remote;
+ {
+- struct contacted *p;
++ struct contacted *p, *next;
++
++ for (p = LIST_FIRST(&ctdtree); p; p = next) {
++ next = LIST_NEXT(p, chain);
+
+- LIST_FOREACH(p, &ctdtree, chain) {
+ if (cmpsaddr(remote, p->remote) <= CMPSADDR_WILDPORT_MATCH) {
+ LIST_REMOVE(p, chain);
+ racoon_free(p->remote);
+@@ -1555,10 +1559,12 @@ int
+ purgeph1bylogin(login)
+ char *login;
+ {
+- struct ph1handle *p;
++ struct ph1handle *p, *next;
+ int found = 0;
+
+- LIST_FOREACH(p, &ph1tree, chain) {
++ for (p = LIST_FIRST(&ph1tree); p; p = next) {
++ next = LIST_NEXT(p, chain);
++
+ if (p->mode_cfg == NULL)
+ continue;
+ if (strncmp(p->mode_cfg->login, login, LOGINLEN) == 0) {