diff options
author | ed <ed@FreeBSD.org> | 2012-02-10 13:40:32 +0000 |
---|---|---|
committer | ed <ed@FreeBSD.org> | 2012-02-10 13:40:32 +0000 |
commit | a03b3637dd2e41fcbd8ffad45cab4cb1cce4c40a (patch) | |
tree | 88bb269cd0f763176f4844bd4983c92e6f0bc0b2 | |
parent | 2b4f7a9e8aff3b740995b6d2aff23de6cad7646d (diff) | |
download | FreeBSD-src-a03b3637dd2e41fcbd8ffad45cab4cb1cce4c40a.zip FreeBSD-src-a03b3637dd2e41fcbd8ffad45cab4cb1cce4c40a.tar.gz |
Detect file modification properly by using tv_nsec.
POSIX 2008 standardizes st_mtim, meaning we can simply use nanosecond
precision to detect file modification.
MFC after: 2 weeks
-rw-r--r-- | lib/libutil/pw_util.c | 3 | ||||
-rw-r--r-- | usr.sbin/vipw/vipw.8 | 9 |
2 files changed, 3 insertions, 9 deletions
diff --git a/lib/libutil/pw_util.c b/lib/libutil/pw_util.c index 5cd27b1..63c63de 100644 --- a/lib/libutil/pw_util.c +++ b/lib/libutil/pw_util.c @@ -347,7 +347,8 @@ pw_edit(int notsetuid) sigprocmask(SIG_SETMASK, &oldsigset, NULL); if (stat(tempname, &st2) == -1) return (-1); - return (st1.st_mtime != st2.st_mtime); + return (st1.st_mtim.tv_sec != st2.st_mtim.tv_sec || + st1.st_mtim.tv_nsec != st2.st_mtim.tv_nsec); } /* diff --git a/usr.sbin/vipw/vipw.8 b/usr.sbin/vipw/vipw.8 index 7162baa..ac4d809 100644 --- a/usr.sbin/vipw/vipw.8 +++ b/usr.sbin/vipw/vipw.8 @@ -28,7 +28,7 @@ .\" @(#)vipw.8 8.1 (Berkeley) 6/6/93 .\" $FreeBSD$ .\" -.Dd June 6, 1993 +.Dd February 10, 2011 .Dt VIPW 8 .Os .Sh NAME @@ -110,10 +110,3 @@ The .Nm utility appeared in .Bx 4.0 . -.Sh BUGS -The mechanism for checking for password file modifications requires that -.Ev EDITOR -run for at least one second. -Non-interactive editor scripts should invoke -.Xr sleep 1 -or equivalent to ensure this happens. |