DragonFlyBSD Kernel Audit
DF-0336 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c
--- a/sys/netinet/tcp_subr.c
+++ b/sys/netinet/tcp_subr.c
@@ -1384,7 +1384,13 @@
 		error = ENOENT;
 		goto out;
 	}
-	error = SYSCTL_OUT(req, inp->inp_socket->so_cred, sizeof(struct ucred));
+	{
+		struct ucred _uc;
+		_uc = *inp->inp_socket->so_cred;
+		crit_exit();
+		error = SYSCTL_OUT(req, &_uc, sizeof(struct ucred));
+		return (error);
+	}
 out:
 	crit_exit();
 	return (error);