lib/strtoday.c: strtoday(): Fix calculation
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: 45c6603cc8 ("[svn-upgrade] Integrating new upstream version, shadow (19990709)")
Link: <https://github.com/shadow-maint/shadow/issues/939>
Reported-by: Michael Vetter <jubalh@iodoru.org>
Tested-by: Gus Kenion <https://github.com/kenion>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
This commit is contained in:
committed by
Serge Hallyn
parent
674409e226
commit
1175932c0c
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user