summaryrefslogtreecommitdiffstats
path: root/sys/kern/uipc_socket.c
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2001-12-31 17:45:16 +0000
committerrwatson <rwatson@FreeBSD.org>2001-12-31 17:45:16 +0000
commit5eea21cccab61c0a7e31c0025f3f57feeb99870a (patch)
tree7c8b2985310180ddd6c0718cf693e5b928d63555 /sys/kern/uipc_socket.c
parent25ebb0c5b897fa6d9c618e7d9ced3a63510278d1 (diff)
downloadFreeBSD-src-5eea21cccab61c0a7e31c0025f3f57feeb99870a.zip
FreeBSD-src-5eea21cccab61c0a7e31c0025f3f57feeb99870a.tar.gz
o Make the credential used by socreate() an explicit argument to
socreate(), rather than getting it implicitly from the thread argument. o Make NFS cache the credential provided at mount-time, and use the cached credential (nfsmount->nm_cred) when making calls to socreate() on initially connecting, or reconnecting the socket. This fixes bugs involving NFS over TCP and ipfw uid/gid rules, as well as bugs involving NFS and mandatory access control implementations. Reviewed by: freebsd-arch
Diffstat (limited to 'sys/kern/uipc_socket.c')
-rw-r--r--sys/kern/uipc_socket.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c
index caae630c..114aae6 100644
--- a/sys/kern/uipc_socket.c
+++ b/sys/kern/uipc_socket.c
@@ -137,11 +137,12 @@ soalloc(waitok)
* closed with soclose().
*/
int
-socreate(dom, aso, type, proto, td)
+socreate(dom, aso, type, proto, cred, td)
int dom;
struct socket **aso;
register int type;
int proto;
+ struct ucred *cred;
struct thread *td;
{
register struct protosw *prp;
@@ -172,7 +173,7 @@ socreate(dom, aso, type, proto, td)
TAILQ_INIT(&so->so_incomp);
TAILQ_INIT(&so->so_comp);
so->so_type = type;
- so->so_cred = crhold(td->td_proc->p_ucred);
+ so->so_cred = crhold(cred);
so->so_proto = prp;
soref(so);
error = (*prp->pr_usrreqs->pru_attach)(so, proto, td);
OpenPOWER on IntegriCloud