aboutsummaryrefslogtreecommitdiffstats
path: root/security
diff options
context:
space:
mode:
authoroliver <oliver@FreeBSD.org>2004-05-20 03:43:30 +0800
committeroliver <oliver@FreeBSD.org>2004-05-20 03:43:30 +0800
commit1ffa842022539ae221e9b1b12d3d594a39c1b233 (patch)
tree355781ff7ff79556af54eae79516fd1ae9219fd9 /security
parentcfb7a670b752c3def3166adf9f5da3a2ee71906f (diff)
downloadfreebsd-ports-graphics-1ffa842022539ae221e9b1b12d3d594a39c1b233.tar.gz
freebsd-ports-graphics-1ffa842022539ae221e9b1b12d3d594a39c1b233.tar.zst
freebsd-ports-graphics-1ffa842022539ae221e9b1b12d3d594a39c1b233.zip
In get_list() function there is do-while loop, patch included additional
continue instructions, which skipped "head = pcbp.inp_list.le_next;" making oidentd go into infinite loop. Submitted By: Dariusz Kulinski <takeda3@netzero.net> PR: ports/66858
Diffstat (limited to 'security')
-rw-r--r--security/oidentd/Makefile2
-rw-r--r--security/oidentd/files/patch-unprivileged_ipv634
2 files changed, 24 insertions, 12 deletions
diff --git a/security/oidentd/Makefile b/security/oidentd/Makefile
index 3fed6f49c66..95284cb2300 100644
--- a/security/oidentd/Makefile
+++ b/security/oidentd/Makefile
@@ -7,7 +7,7 @@
PORTNAME= oidentd
PORTVERSION= 2.0.7
-PORTREVISION= 5
+PORTREVISION= 6
CATEGORIES= security
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
MASTER_SITE_SUBDIR= ojnk
diff --git a/security/oidentd/files/patch-unprivileged_ipv6 b/security/oidentd/files/patch-unprivileged_ipv6
index 7b334823b2c..b48c011b666 100644
--- a/security/oidentd/files/patch-unprivileged_ipv6
+++ b/security/oidentd/files/patch-unprivileged_ipv6
@@ -1,6 +1,6 @@
diff -ru src.old/kernel/freebsd.c src/kernel/freebsd.c
---- src.old/kernel/freebsd.c Sat Mar 20 20:36:51 2004
-+++ src/kernel/freebsd.c Sat Mar 20 20:37:09 2004
+--- src.old/kernel/freebsd.c Tue May 18 23:12:23 2004
++++ src/kernel/freebsd.c Tue May 18 23:13:45 2004
@@ -159,11 +159,11 @@
#ifdef _HAVE_OLD_INPCB
@@ -38,7 +38,7 @@ diff -ru src.old/kernel/freebsd.c src/kernel/freebsd.c
pcbp->inp_fport == fport &&
pcbp->inp_lport == lport)
{
-@@ -199,16 +199,33 @@
+@@ -199,28 +199,45 @@
#else
@@ -76,7 +76,10 @@ diff -ru src.old/kernel/freebsd.c src/kernel/freebsd.c
head = pcbhead->lh_first;
if (head == NULL)
-@@ -218,9 +235,9 @@
+ return (NULL);
+
+- do {
++ for (; head != NULL; head = pcbp.inp_list.le_next) {
if (getbuf((u_long) head, &pcbp, sizeof(struct inpcb)) == -1)
break;
@@ -89,7 +92,7 @@ diff -ru src.old/kernel/freebsd.c src/kernel/freebsd.c
pcbp.inp_fport == fport &&
pcbp.inp_lport == lport)
{
-@@ -228,8 +245,32 @@
+@@ -228,16 +245,39 @@
}
}
@@ -124,7 +127,16 @@ diff -ru src.old/kernel/freebsd.c src/kernel/freebsd.c
pcbp.inp_fport == fport &&
pcbp.inp_lport == lport)
{
-@@ -248,7 +289,7 @@
+ return (pcbp.inp_socket);
+ }
+
+- head = pcbp.inp_list.le_next;
+- } while (head != NULL);
++ }
+
+ return (NULL);
+ }
+@@ -248,7 +288,7 @@
** Return the UID of the connection owner
*/
@@ -133,7 +145,7 @@ diff -ru src.old/kernel/freebsd.c src/kernel/freebsd.c
in_port_t fport,
struct sockaddr_storage *laddr,
struct sockaddr_storage *faddr)
-@@ -276,8 +317,9 @@
+@@ -276,8 +316,9 @@
tcb.inp_prev = (struct inpcb *) kinfo->nl[N_TCB].n_value;
#endif
@@ -145,7 +157,7 @@ diff -ru src.old/kernel/freebsd.c src/kernel/freebsd.c
if (sockp == NULL)
return (-1);
-@@ -346,6 +388,14 @@
+@@ -346,6 +387,14 @@
return (-1);
}
@@ -160,7 +172,7 @@ diff -ru src.old/kernel/freebsd.c src/kernel/freebsd.c
#ifdef MASQ_SUPPORT
/*
-@@ -456,36 +506,7 @@
+@@ -456,36 +505,7 @@
struct sockaddr_storage *laddr,
struct sockaddr_storage *faddr)
{
@@ -199,8 +211,8 @@ diff -ru src.old/kernel/freebsd.c src/kernel/freebsd.c
#endif
diff -ru src.old/kernel/freebsd5.c src/kernel/freebsd5.c
---- src.old/kernel/freebsd5.c Sat Mar 20 20:36:51 2004
-+++ src/kernel/freebsd5.c Sat Mar 20 20:37:13 2004
+--- src.old/kernel/freebsd5.c Tue May 18 23:12:23 2004
++++ src/kernel/freebsd5.c Tue May 18 23:12:46 2004
@@ -160,11 +160,11 @@
#ifdef _HAVE_OLD_INPCB