[klibc] [PATCH] Fix implementation of utimes

Benjamin Gwin bgwin at google.com
Thu Dec 9 16:42:36 PST 2021


This was not correctly initializing the timespec array before passing it
on to utimensat.

Tested: Built cpio and extracted an image with `cpio -im` to preserve
mtime. The calls to utime now pass through the correct timestamps.

Signed-off-by: Benjamin Gwin <bgwin at google.com>
---
 usr/klibc/utimes.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/usr/klibc/utimes.c b/usr/klibc/utimes.c
index fd378a63..ce6d2f81 100644
--- a/usr/klibc/utimes.c
+++ b/usr/klibc/utimes.c
@@ -10,8 +10,10 @@ int utimes(const char *file, const struct timeval tvp[2])
 	struct timespec ts[2];
 
 	if (tvp) {
-		ts->tv_sec = tvp->tv_sec;
-		ts->tv_nsec = tvp->tv_usec * 1000;
+		ts[0].tv_sec = tvp[0].tv_sec;
+		ts[0].tv_nsec = tvp[0].tv_usec * 1000;
+		ts[1].tv_sec = tvp[1].tv_sec;
+		ts[1].tv_nsec = tvp[1].tv_usec * 1000;
 	}
 
 	return utimensat(AT_FDCWD, file, &ts[0], 0);
-- 
2.34.1.173.g76aa8bc2d0-goog



More information about the klibc mailing list