summaryrefslogtreecommitdiffstats
path: root/sys/ufs
diff options
context:
space:
mode:
Diffstat (limited to 'sys/ufs')
-rw-r--r--sys/ufs/ufs/ufs_vnops.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/sys/ufs/ufs/ufs_vnops.c b/sys/ufs/ufs/ufs_vnops.c
index 36dad08..720e7bb 100644
--- a/sys/ufs/ufs/ufs_vnops.c
+++ b/sys/ufs/ufs/ufs_vnops.c
@@ -443,6 +443,17 @@ ufs_setattr(ap)
((int)vap->va_bytes != VNOVAL) || (vap->va_gen != VNOVAL)) {
return (EINVAL);
}
+ /*
+ * Update the file's access time when it has been executed. We are
+ * doing this here to specifically avoid some of the checks done
+ * below -- this operation is done by request of the kernel and
+ * should bypass some security checks. Things like read-only
+ * checks get handled by other levels (e.g., ffs_update()).
+ */
+ if (vap->va_vaflags & VA_EXECVE_ATIME) {
+ ip->i_flag |= IN_ACCESS;
+ return (0);
+ }
if (vap->va_flags != VNOVAL) {
if (vp->v_mount->mnt_flag & MNT_RDONLY)
return (EROFS);
OpenPOWER on IntegriCloud