diff options
Diffstat (limited to 'main/ipsec-tools/03-list-foreach-fixes.patch')
-rw-r--r-- | main/ipsec-tools/03-list-foreach-fixes.patch | 59 |
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) { |