commit 31d95b9c3339af50f0e6758a1e3a66d846e5145d
parent 5debef098b7ebba67da5db9fbb020a7cd0f90a7f
Author: Duncan Overbruck <mail@duncano.de>
Date: Mon, 3 Feb 2020 22:19:45 +0100
timestamp.c: check fstat(2) instead of separate stat(2)
Diffstat:
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/timestamp.c b/timestamp.c
@@ -202,6 +202,8 @@ timestamp_check(int fd, int secs)
if (fstat(fd, &st) == -1)
err(1, "fstat");
+ if (st.st_uid != 0 || st.st_gid != getgid() || st.st_mode != (S_IFREG | 0000))
+ errx(1, "timestamp uid, gid or mode wrong");
if (!timespecisset(&st.st_atim) || !timespecisset(&st.st_mtim)) {
warnx("timestamp atim or mtime not set");
@@ -254,9 +256,6 @@ timestamp_open(int *valid, int secs)
if (timestamp_path(path, sizeof path) == -1)
return -1;
- if (stat(path, &st) != -1 && (st.st_uid != 0 || st.st_gid != getgid()|| st.st_mode != (S_IFREG | 0000)))
- return -1;
-
fd = open(path, O_RDONLY|O_NOFOLLOW);
if (fd == -1) {
char tmp[256];