DragonFlyBSD Kernel Audit
DF-0076 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/kern/uipc_socket2.c b/sys/kern/uipc_socket2.c
--- a/sys/kern/uipc_socket2.c
+++ b/sys/kern/uipc_socket2.c
@@ -250,7 +250,7 @@
 	soclrstate(so, SS_ISCONNECTING | SS_ISDISCONNECTING | SS_ISCONFIRMING);
 	sosetstate(so, SS_ISCONNECTED);
 	if (head && (so->so_state & SS_INCOMP)) {
-		if ((so->so_options & SO_ACCEPTFILTER) != 0) {
+		if ((head->so_options & SO_ACCEPTFILTER) != 0 && head->so_accf != NULL) {
 			so->so_upcall = head->so_accf->so_accept_filter->accf_callback;
 			so->so_upcallarg = head->so_accf->so_accept_filter_arg;
 			atomic_set_int(&so->so_rcv.ssb_flags, SSB_UPCALL);