summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
authorguido <guido@FreeBSD.org>1997-03-23 20:08:22 +0000
committerguido <guido@FreeBSD.org>1997-03-23 20:08:22 +0000
commitc337c37259502bbcb3efde45ca7db82f927ff512 (patch)
treee2f5aeaa60774a851df745574651915a33ccf5a1 /sys/kern
parent8e15480d4907712b453456ae3366cfe75ea7b804 (diff)
downloadFreeBSD-src-c337c37259502bbcb3efde45ca7db82f927ff512.zip
FreeBSD-src-c337c37259502bbcb3efde45ca7db82f927ff512.tar.gz
Add generation number randomization. Newly created filesystems wil now
automatically have random generation numbers. The kenel way of handling those also changed. Further it is advised to run fsirand on all your nfs exported filesystems. the code is mostly copied from OpenBSD, with the randomization chanegd to use /dev/urandom Reviewed by: Garrett Obtained from: OpenBSD
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/vfs_extattr.c14
-rw-r--r--sys/kern/vfs_syscalls.c14
2 files changed, 26 insertions, 2 deletions
diff --git a/sys/kern/vfs_extattr.c b/sys/kern/vfs_extattr.c
index 6404a8c..2997fe5 100644
--- a/sys/kern/vfs_extattr.c
+++ b/sys/kern/vfs_extattr.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_syscalls.c 8.13 (Berkeley) 4/15/94
- * $Id: vfs_syscalls.c,v 1.59 1997/03/05 01:42:14 msmith Exp $
+ * $Id: vfs_syscalls.c,v 1.60 1997/03/23 03:36:35 bde Exp $
*/
/*
@@ -558,6 +558,7 @@ statfs(p, uap, retval)
register struct statfs *sp;
int error;
struct nameidata nd;
+ struct statfs sb;
NDINIT(&nd, LOOKUP, FOLLOW, UIO_USERSPACE, SCARG(uap, path), p);
if (error = namei(&nd))
@@ -569,6 +570,11 @@ statfs(p, uap, retval)
if (error)
return (error);
sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK;
+ if (p->p_ucred->cr_uid != 0) {
+ bcopy((caddr_t)sp, (caddr_t)&sb, sizeof(sb));
+ sb.f_fsid.val[0] = sb.f_fsid.val[1] = 0;
+ sp = &sb;
+ }
return (copyout((caddr_t)sp, (caddr_t)SCARG(uap, buf), sizeof(*sp)));
}
@@ -595,6 +601,7 @@ fstatfs(p, uap, retval)
struct mount *mp;
register struct statfs *sp;
int error;
+ struct statfs sb;
if (error = getvnode(p->p_fd, SCARG(uap, fd), &fp))
return (error);
@@ -604,6 +611,11 @@ fstatfs(p, uap, retval)
if (error)
return (error);
sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK;
+ if (p->p_ucred->cr_uid != 0) {
+ bcopy((caddr_t)sp, (caddr_t)&sb, sizeof(sb));
+ sb.f_fsid.val[0] = sb.f_fsid.val[1] = 0;
+ sp = &sb;
+ }
return (copyout((caddr_t)sp, (caddr_t)SCARG(uap, buf), sizeof(*sp)));
}
diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c
index 6404a8c..2997fe5 100644
--- a/sys/kern/vfs_syscalls.c
+++ b/sys/kern/vfs_syscalls.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_syscalls.c 8.13 (Berkeley) 4/15/94
- * $Id: vfs_syscalls.c,v 1.59 1997/03/05 01:42:14 msmith Exp $
+ * $Id: vfs_syscalls.c,v 1.60 1997/03/23 03:36:35 bde Exp $
*/
/*
@@ -558,6 +558,7 @@ statfs(p, uap, retval)
register struct statfs *sp;
int error;
struct nameidata nd;
+ struct statfs sb;
NDINIT(&nd, LOOKUP, FOLLOW, UIO_USERSPACE, SCARG(uap, path), p);
if (error = namei(&nd))
@@ -569,6 +570,11 @@ statfs(p, uap, retval)
if (error)
return (error);
sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK;
+ if (p->p_ucred->cr_uid != 0) {
+ bcopy((caddr_t)sp, (caddr_t)&sb, sizeof(sb));
+ sb.f_fsid.val[0] = sb.f_fsid.val[1] = 0;
+ sp = &sb;
+ }
return (copyout((caddr_t)sp, (caddr_t)SCARG(uap, buf), sizeof(*sp)));
}
@@ -595,6 +601,7 @@ fstatfs(p, uap, retval)
struct mount *mp;
register struct statfs *sp;
int error;
+ struct statfs sb;
if (error = getvnode(p->p_fd, SCARG(uap, fd), &fp))
return (error);
@@ -604,6 +611,11 @@ fstatfs(p, uap, retval)
if (error)
return (error);
sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK;
+ if (p->p_ucred->cr_uid != 0) {
+ bcopy((caddr_t)sp, (caddr_t)&sb, sizeof(sb));
+ sb.f_fsid.val[0] = sb.f_fsid.val[1] = 0;
+ sp = &sb;
+ }
return (copyout((caddr_t)sp, (caddr_t)SCARG(uap, buf), sizeof(*sp)));
}
OpenPOWER on IntegriCloud