diff options
author | pjd <pjd@FreeBSD.org> | 2005-05-22 21:52:30 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2005-05-22 21:52:30 +0000 |
commit | a6e0e217b2f0f56ca79b81d2969a21d07a1d5039 (patch) | |
tree | 72474345e88f120fcedb60f6662a979152c76a4f /sys/kern/vfs_extattr.c | |
parent | 9c80b4966970886f4b2048444beb6e62fb4e1d58 (diff) | |
download | FreeBSD-src-a6e0e217b2f0f56ca79b81d2969a21d07a1d5039.zip FreeBSD-src-a6e0e217b2f0f56ca79b81d2969a21d07a1d5039.tar.gz |
If we need to hide fsid, kern_statfs()/kern_fstatfs() will do it for us,
so do not duplicate the code in cvtstatfs().
Note, that we now need to clear fsid in freebsd4_getfsstat().
This moves all security related checks from functions like cvtstatfs()
and will allow to add more security related stuff (like statfs(2), etc.
protection for jails) a bit easier.
Diffstat (limited to 'sys/kern/vfs_extattr.c')
-rw-r--r-- | sys/kern/vfs_extattr.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/sys/kern/vfs_extattr.c b/sys/kern/vfs_extattr.c index fc04e64..3e8c968 100644 --- a/sys/kern/vfs_extattr.c +++ b/sys/kern/vfs_extattr.c @@ -557,6 +557,8 @@ freebsd4_getfsstat(td, uap) } sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK; cvtstatfs(td, sp, &osb); + if (suser(td)) + osb.f_fsid.val[0] = osb.f_fsid.val[1] = 0; error = copyout(&osb, sfsp, sizeof(osb)); if (error) { vfs_unbusy(mp, td); @@ -639,11 +641,7 @@ cvtstatfs(td, nsp, osp) MIN(MFSNAMELEN, OMNAMELEN)); bcopy(nsp->f_mntfromname, osp->f_mntfromname, MIN(MFSNAMELEN, OMNAMELEN)); - if (suser(td)) { - osp->f_fsid.val[0] = osp->f_fsid.val[1] = 0; - } else { - osp->f_fsid = nsp->f_fsid; - } + osp->f_fsid = nsp->f_fsid; } #endif /* COMPAT_FREEBSD4 */ |