summaryrefslogtreecommitdiffstats
path: root/sys/kern/vfs_extattr.c
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2002-07-30 18:48:25 +0000
committerrwatson <rwatson@FreeBSD.org>2002-07-30 18:48:25 +0000
commit5f36208df2d93cd3e6c4992accca9cc1e456e0f0 (patch)
tree762506ee96fa450bc42766e81d0afb99fbffc96e /sys/kern/vfs_extattr.c
parentf41233d2cf47a661abee65d4a6dce082cf02432d (diff)
downloadFreeBSD-src-5f36208df2d93cd3e6c4992accca9cc1e456e0f0.zip
FreeBSD-src-5f36208df2d93cd3e6c4992accca9cc1e456e0f0.tar.gz
When referencing nd_cnp after namei(), always pass SAVENAME into
NDINIT() operation flags. Submitted by: green Obtained from: TrustedBSD Project Sponsored by: DARPA, NAI Labs
Diffstat (limited to 'sys/kern/vfs_extattr.c')
-rw-r--r--sys/kern/vfs_extattr.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/sys/kern/vfs_extattr.c b/sys/kern/vfs_extattr.c
index 2a8e247..dd9c78a 100644
--- a/sys/kern/vfs_extattr.c
+++ b/sys/kern/vfs_extattr.c
@@ -798,7 +798,8 @@ mknod(td, uap)
return (error);
restart:
bwillwrite();
- NDINIT(&nd, CREATE, LOCKPARENT, UIO_USERSPACE, SCARG(uap, path), td);
+ NDINIT(&nd, CREATE, LOCKPARENT | SAVENAME, UIO_USERSPACE,
+ SCARG(uap, path), td);
if ((error = namei(&nd)) != 0)
return (error);
vp = nd.ni_vp;
@@ -882,7 +883,8 @@ mkfifo(td, uap)
restart:
bwillwrite();
- NDINIT(&nd, CREATE, LOCKPARENT, UIO_USERSPACE, SCARG(uap, path), td);
+ NDINIT(&nd, CREATE, LOCKPARENT | SAVENAME, UIO_USERSPACE,
+ SCARG(uap, path), td);
if ((error = namei(&nd)) != 0)
return (error);
if (nd.ni_vp != NULL) {
@@ -950,7 +952,8 @@ link(td, uap)
vrele(vp);
return (error);
}
- NDINIT(&nd, CREATE, LOCKPARENT|NOOBJ, UIO_USERSPACE, SCARG(uap, link), td);
+ NDINIT(&nd, CREATE, LOCKPARENT | NOOBJ | SAVENAME, UIO_USERSPACE,
+ SCARG(uap, link), td);
if ((error = namei(&nd)) == 0) {
if (nd.ni_vp != NULL) {
vrele(nd.ni_vp);
@@ -999,7 +1002,8 @@ symlink(td, uap)
goto out;
restart:
bwillwrite();
- NDINIT(&nd, CREATE, LOCKPARENT|NOOBJ, UIO_USERSPACE, SCARG(uap, link), td);
+ NDINIT(&nd, CREATE, LOCKPARENT | NOOBJ | SAVENAME, UIO_USERSPACE,
+ SCARG(uap, link), td);
if ((error = namei(&nd)) != 0)
goto out;
if (nd.ni_vp) {
@@ -2613,7 +2617,7 @@ vn_mkdir(path, mode, segflg, td)
restart:
bwillwrite();
- NDINIT(&nd, CREATE, LOCKPARENT, segflg, path, td);
+ NDINIT(&nd, CREATE, LOCKPARENT | SAVENAME, segflg, path, td);
nd.ni_cnd.cn_flags |= WILLBEDIR;
if ((error = namei(&nd)) != 0)
return (error);
OpenPOWER on IntegriCloud