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
4ab36f5f96
commit
4130080e12
@ -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