Apply by doing:
	cd /usr/src/sys/kern
	patch -p0 < 007_chflags.patch

And then rebuild your kernel.

Index: vfs_syscalls.c
===================================================================
RCS file: /cvs/src/sys/kern/vfs_syscalls.c,v
retrieving revision 1.56
diff -u -r1.56 vfs_syscalls.c
--- vfs_syscalls.c	1999/02/26 04:51:17	1.56
+++ vfs_syscalls.c	1999/07/30 21:21:44
@@ -1530,10 +1530,19 @@
 	else if (SCARG(uap, flags) == VNOVAL)
 		error = EINVAL;
 	else {
+		if (suser(p->p_ucred, &p->p_acflag)) {
+			if ((error = VOP_GETATTR(vp, &vattr, p->p_ucred, p)) != 0)
+				goto out;
+			if (vattr.va_type == VCHR || vattr.va_type == VBLK) {
+				error = EINVAL;
+				goto out;
+			}
+		}
 		VATTR_NULL(&vattr);
 		vattr.va_flags = SCARG(uap, flags);
 		error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
 	}
+out:
 	vput(vp);
 	return (error);
 }
@@ -1567,10 +1576,20 @@
 	else if (SCARG(uap, flags) == VNOVAL)
 		error = EINVAL;
 	else {
+		if (suser(p->p_ucred, &p->p_acflag)) {
+			if ((error = VOP_GETATTR(vp, &vattr, p->p_ucred, p))
+			    != 0)
+				goto out;
+			if (vattr.va_type == VCHR || vattr.va_type == VBLK) {
+				error = EINVAL;
+				goto out;
+			}
+		}
 		VATTR_NULL(&vattr);
 		vattr.va_flags = SCARG(uap, flags);
 		error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
 	}
+out:
 	VOP_UNLOCK(vp, 0, p);
 	return (error);
 }
