It was noticed that we do not change a file's access time when it gets
executed. This appears to violate most of the UNIX-ish standards. One example quote from: http://www.opengroup.org/onlinepubs/009695399/functions/exec.html Upon successful completion, the exec functions shall mark for update the st_atime field of the file. If an exec function failed but was able to locate the process image file, whether the st_atime field is marked for update is unspecified. Should the exec function succeed, the process image file shall be considered to have been opened with open(). This appears to take care of it for ufs filesystems, doing the necessary sanity checks (read-only filesystem, etc) without violating any other standards (setting atime for any open appears to be allowed in any standards I could find). Noticed by: cperciva Reviewed by: kan, rwatson
This commit is contained in:
parent
37c15216fc
commit
0fac1537a2
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=141130
@ -254,6 +254,12 @@ ufs_open(struct vop_open_args *ap)
|
||||
(ap->a_mode & (FWRITE | O_APPEND)) == FWRITE)
|
||||
return (EPERM);
|
||||
vnode_create_vobject(vp, DIP(ip, i_size), ap->a_td);
|
||||
/*
|
||||
* Set the access time - this catches normal open(2) of files
|
||||
* as well as execve(2).
|
||||
*/
|
||||
ip->i_flag |= IN_ACCESS;
|
||||
ufs_itimes(vp);
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user