From 1175932c0c86ee46ee298fd9cfa01653a2ba3a27 Mon Sep 17 00:00:00 2001 From: Alejandro Colomar Date: Thu, 8 Feb 2024 12:53:24 +0100 Subject: [PATCH] lib/strtoday.c: strtoday(): Fix calculation MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Days officially roll over at 00:00 UTC, not at 12:00 UTC. I see no reason to add that half day. Also, remove the comment. It's likely to get stale. So, get_date() gets the number of seconds since the Epoch. I wonder how that thing works, but I'll assume it's something similar to getdate(3) + mktime(3). After that, we need to convert seconds since Epoch to days since Epoch. That should be a simple division, AFAICS, since Epoch is "1970‐01‐01 00:00:00 +0000 (UTC)". See mktime(3). Fixes: 45c6603cc86c ("[svn-upgrade] Integrating new upstream version, shadow (19990709)") Link: Reported-by: Michael Vetter Tested-by: Gus Kenion Signed-off-by: Alejandro Colomar --- lib/strtoday.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/strtoday.c b/lib/strtoday.c index ad1ed61f4..0c7a0b012 100644 --- a/lib/strtoday.c +++ b/lib/strtoday.c @@ -68,10 +68,9 @@ long strtoday (const char *str) return retdate; } - t = get_date (str, NULL); + t = get_date(str, NULL); if ((time_t) - 1 == t) { return -2; } - /* convert seconds to days since 1970-01-01 */ - return (t + DAY / 2) / DAY; + return t / DAY; } -- 2.47.2