diff options
Diffstat (limited to 'share/security/patches/SA-02:26/accept.patch')
-rw-r--r-- | share/security/patches/SA-02:26/accept.patch | 51 |
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); |