[klibc] Fix implementation of utimes
authorBenjamin Gwin <bgwin@google.com>
Fri, 10 Dec 2021 00:42:36 +0000 (16:42 -0800)
committerBen Hutchings <benh@debian.org>
Sun, 26 Dec 2021 23:17:05 +0000 (23:17 +0000)
Origin: https://git.kernel.org/pub/scm/libs/klibc/klibc.git/commit/?id=a13b588a915d3a4498bf342d85524eb7dde71594

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@google.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name klibc-fix-implementation-of-utimes.patch

usr/klibc/utimes.c

index fd378a635dc64f63a482355dc72e149f51017641..ce6d2f811a542174864535b4e17b50fde17057f4 100644 (file)
@@ -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);