diff options
author | rwatson <rwatson@FreeBSD.org> | 2002-07-30 18:48:25 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2002-07-30 18:48:25 +0000 |
commit | 5f36208df2d93cd3e6c4992accca9cc1e456e0f0 (patch) | |
tree | 762506ee96fa450bc42766e81d0afb99fbffc96e /sys/kern/vfs_extattr.c | |
parent | f41233d2cf47a661abee65d4a6dce082cf02432d (diff) | |
download | FreeBSD-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.c | 14 |
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); |