summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authored <ed@FreeBSD.org>2012-02-10 13:40:32 +0000
committered <ed@FreeBSD.org>2012-02-10 13:40:32 +0000
commita03b3637dd2e41fcbd8ffad45cab4cb1cce4c40a (patch)
tree88bb269cd0f763176f4844bd4983c92e6f0bc0b2
parent2b4f7a9e8aff3b740995b6d2aff23de6cad7646d (diff)
downloadFreeBSD-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.c3
-rw-r--r--usr.sbin/vipw/vipw.89
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.
OpenPOWER on IntegriCloud