summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2002-02-27 19:15:29 +0000
committerjhb <jhb@FreeBSD.org>2002-02-27 19:15:29 +0000
commit56094fdb72b398e3c7bcf13e638de2b00e5b0197 (patch)
treef7667a91cdb42885bddbed430d30dc655811b45d /sys
parent8205940b14ff69474255c80c81d6342e117997ab (diff)
downloadFreeBSD-src-56094fdb72b398e3c7bcf13e638de2b00e5b0197.zip
FreeBSD-src-56094fdb72b398e3c7bcf13e638de2b00e5b0197.tar.gz
- Change namei() to use td_ucred instead of p_ucred.
- Change the hack in access() that uses a temporary credential to set td_ucred to the temp cred instead of p_ucred.
Diffstat (limited to 'sys')
-rw-r--r--sys/kern/vfs_extattr.c6
-rw-r--r--sys/kern/vfs_lookup.c2
-rw-r--r--sys/kern/vfs_syscalls.c6
3 files changed, 7 insertions, 7 deletions
diff --git a/sys/kern/vfs_extattr.c b/sys/kern/vfs_extattr.c
index 7cb7f15..8e98fcd 100644
--- a/sys/kern/vfs_extattr.c
+++ b/sys/kern/vfs_extattr.c
@@ -1838,7 +1838,6 @@ access(td, uap)
int error;
struct nameidata nd;
- cred = td->td_proc->p_ucred;
/*
* Create and modify a temporary credential instead of one that
* is potentially shared. This could also mess up socket
@@ -1848,10 +1847,11 @@ access(td, uap)
* may be better to explicitly pass the credential to namei()
* rather than to modify the potentially shared process structure.
*/
+ cred = td->td_ucred;
tmpcred = crdup(cred);
tmpcred->cr_uid = cred->cr_ruid;
tmpcred->cr_groups[0] = cred->cr_rgid;
- td->td_proc->p_ucred = tmpcred;
+ td->td_ucred = tmpcred;
NDINIT(&nd, LOOKUP, FOLLOW | LOCKLEAF | NOOBJ, UIO_USERSPACE,
SCARG(uap, path), td);
if ((error = namei(&nd)) != 0)
@@ -1862,7 +1862,7 @@ access(td, uap)
NDFREE(&nd, NDF_ONLY_PNBUF);
vput(vp);
out1:
- td->td_proc->p_ucred = cred;
+ td->td_ucred = cred;
crfree(tmpcred);
return (error);
}
diff --git a/sys/kern/vfs_lookup.c b/sys/kern/vfs_lookup.c
index 689190b..e1e6cc0 100644
--- a/sys/kern/vfs_lookup.c
+++ b/sys/kern/vfs_lookup.c
@@ -104,7 +104,7 @@ namei(ndp)
struct thread *td = cnp->cn_thread;
struct proc *p = td->td_proc;
- ndp->ni_cnd.cn_cred = ndp->ni_cnd.cn_thread->td_proc->p_ucred;
+ ndp->ni_cnd.cn_cred = ndp->ni_cnd.cn_thread->td_ucred;
KASSERT(cnp->cn_cred && p, ("namei: bad cred/proc"));
KASSERT((cnp->cn_nameiop & (~OPMASK)) == 0,
("namei: nameiop contaminated with flags"));
diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c
index 7cb7f15..8e98fcd 100644
--- a/sys/kern/vfs_syscalls.c
+++ b/sys/kern/vfs_syscalls.c
@@ -1838,7 +1838,6 @@ access(td, uap)
int error;
struct nameidata nd;
- cred = td->td_proc->p_ucred;
/*
* Create and modify a temporary credential instead of one that
* is potentially shared. This could also mess up socket
@@ -1848,10 +1847,11 @@ access(td, uap)
* may be better to explicitly pass the credential to namei()
* rather than to modify the potentially shared process structure.
*/
+ cred = td->td_ucred;
tmpcred = crdup(cred);
tmpcred->cr_uid = cred->cr_ruid;
tmpcred->cr_groups[0] = cred->cr_rgid;
- td->td_proc->p_ucred = tmpcred;
+ td->td_ucred = tmpcred;
NDINIT(&nd, LOOKUP, FOLLOW | LOCKLEAF | NOOBJ, UIO_USERSPACE,
SCARG(uap, path), td);
if ((error = namei(&nd)) != 0)
@@ -1862,7 +1862,7 @@ access(td, uap)
NDFREE(&nd, NDF_ONLY_PNBUF);
vput(vp);
out1:
- td->td_proc->p_ucred = cred;
+ td->td_ucred = cred;
crfree(tmpcred);
return (error);
}
OpenPOWER on IntegriCloud