From 6ff2aab365a19fdba9ec7f1c6083f0f9f24b8e03 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 22 Mar 2024 16:47:50 +0800 Subject: [PATCH] utimens: fix confusing arg type in internal func MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Although the old code was technically correct, this was accidental and it understandably confused Coverity. Reported by Ondrej Dubaj in: https://lists.gnu.org/r/bug-tar/2021-04/msg00000.html * lib/utimens.c (update_timespec): Change arg type from ‘struct timespec *[2]’ (pointer to array of 2 pointers to timespecs) to ‘struct timespec **’ (pointer to pointer to the first timespec in an array of 2 timespecs). Although the old code happened to be technically correct, it was misleading and confused Coverity. And though the type ‘struct timespec (**)[2]’ (pointer to pointer to array of 2 timespecs) would perhaps be more technically correct, it would be almost as confusing and would require changes elsewhere in this file; let’s quit while we’re ahead. Upstream-commit: a3a946f670718d0dee5a7425ad5ac0a29fb46ea1 Signed-off-by: Kamil Dudka --- lib/utimens.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/utimens.c b/lib/utimens.c index 3f53942..ea8c672 100644 --- a/lib/utimens.c +++ b/lib/utimens.c @@ -123,14 +123,14 @@ validate_timespec (struct timespec timespec[2]) return result + (utime_omit_count == 1); } -/* Normalize any UTIME_NOW or UTIME_OMIT values in *TS, using stat - buffer STATBUF to obtain the current timestamps of the file. If +/* Normalize any UTIME_NOW or UTIME_OMIT values in (*TS)[0] and (*TS)[1], + using STATBUF to obtain the current timestamps of the file. If both times are UTIME_NOW, set *TS to NULL (as this can avoid some permissions issues). If both times are UTIME_OMIT, return true (nothing further beyond the prior collection of STATBUF is necessary); otherwise return false. */ static bool -update_timespec (struct stat const *statbuf, struct timespec *ts[2]) +update_timespec (struct stat const *statbuf, struct timespec **ts) { struct timespec *timespec = *ts; if (timespec[0].tv_nsec == UTIME_OMIT -- 2.27.0