aboutsummaryrefslogtreecommitdiff
path: root/share/security/patches/SA-02:26/accept.patch
diff options
context:
space:
mode:
Diffstat (limited to 'share/security/patches/SA-02:26/accept.patch')
-rw-r--r--share/security/patches/SA-02:26/accept.patch51
1 files changed, 51 insertions, 0 deletions
diff --git a/share/security/patches/SA-02:26/accept.patch b/share/security/patches/SA-02:26/accept.patch
new file mode 100644
index 0000000000..a0d65ada9c
--- /dev/null
+++ b/share/security/patches/SA-02:26/accept.patch
@@ -0,0 +1,51 @@
+Index: sys/kern/uipc_socket.c
+diff -u sys/kern/uipc_socket.c:1.68.2.20 sys/kern/uipc_socket.c:1.68.2.21
+--- sys/kern/uipc_socket.c:1.68.2.20 Sun Apr 28 16:38:13 2002
++++ sys/kern/uipc_socket.c Tue Apr 30 22:27:35 2002
+@@ -256,7 +256,6 @@
+ } else {
+ panic("sofree: not queued");
+ }
+- head->so_qlen--;
+ so->so_state &= ~SS_INCOMP;
+ so->so_head = NULL;
+ }
+@@ -1641,6 +1640,6 @@
+ {
+ struct socket *so = (struct socket *)kn->kn_fp->f_data;
+
+- kn->kn_data = so->so_qlen - so->so_incqlen;
++ kn->kn_data = so->so_qlen;
+ return (! TAILQ_EMPTY(&so->so_comp));
+ }
+Index: sys/kern/uipc_socket2.c
+diff -u sys/kern/uipc_socket2.c:1.55.2.13 sys/kern/uipc_socket2.c:1.55.2.15
+--- sys/kern/uipc_socket2.c:1.55.2.15 Tue Apr 30 22:26:30 2002
++++ sys/kern/uipc_socket2.c Tue Apr 30 22:27:35 2002
+@@ -123,6 +123,7 @@
+ head->so_incqlen--;
+ so->so_state &= ~SS_INCOMP;
+ TAILQ_INSERT_TAIL(&head->so_comp, so, so_list);
++ head->so_qlen++;
+ so->so_state |= SS_COMP;
+ sorwakeup(head);
+ wakeup_one(&head->so_timeo);
+@@ -207,12 +208,17 @@
+ if (connstatus) {
+ TAILQ_INSERT_TAIL(&head->so_comp, so, so_list);
+ so->so_state |= SS_COMP;
++ head->so_qlen++;
+ } else {
++ if (head->so_incqlen > head->so_qlimit) {
++ struct socket *sp;
++ sp = TAILQ_FIRST(&head->so_incomp);
++ (void) soabort(sp);
++ }
+ TAILQ_INSERT_TAIL(&head->so_incomp, so, so_list);
+ so->so_state |= SS_INCOMP;
+ head->so_incqlen++;
+ }
+- head->so_qlen++;
+ if (connstatus) {
+ sorwakeup(head);
+ wakeup((caddr_t)&head->so_timeo);