mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-16 10:20:30 +00:00
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.
This commit is contained in:
parent
10c447fac2
commit
a0e96a49df
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=146502
@ -237,13 +237,8 @@ bsd_to_linux_statfs(struct thread *td, struct statfs *bsd_statfs,
|
||||
linux_statfs->f_bavail = bsd_statfs->f_bavail;
|
||||
linux_statfs->f_ffree = bsd_statfs->f_ffree;
|
||||
linux_statfs->f_files = bsd_statfs->f_files;
|
||||
if (suser(td)) {
|
||||
linux_statfs->f_fsid.val[0] = 0;
|
||||
linux_statfs->f_fsid.val[1] = 0;
|
||||
} else {
|
||||
linux_statfs->f_fsid.val[0] = bsd_statfs->f_fsid.val[0];
|
||||
linux_statfs->f_fsid.val[1] = bsd_statfs->f_fsid.val[1];
|
||||
}
|
||||
linux_statfs->f_fsid.val[0] = bsd_statfs->f_fsid.val[0];
|
||||
linux_statfs->f_fsid.val[1] = bsd_statfs->f_fsid.val[1];
|
||||
linux_statfs->f_namelen = MAXNAMLEN;
|
||||
}
|
||||
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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 */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user