diff --git a/debian/patches/series b/debian/patches/series index bf67517e..bb49502e 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -8,3 +8,4 @@ debian/Define-LOGIN_NAME_MAX-on-HURD.patch debian/Stop-building-programs-we-do-not-install.patch upstream/a015e919834c90b99947829c6c823f7fe93a8097-E_BAD_NAME.patch upstream/man-useradd.8.xml-Document-new-exit-code-19-E_BAD_NAME.patch +upstream/Revert-lib-src-Use-local-time-for-human-readable-dates.patch diff --git a/debian/patches/upstream/Revert-lib-src-Use-local-time-for-human-readable-dates.patch b/debian/patches/upstream/Revert-lib-src-Use-local-time-for-human-readable-dates.patch new file mode 100644 index 00000000..9e5860cb --- /dev/null +++ b/debian/patches/upstream/Revert-lib-src-Use-local-time-for-human-readable-dates.patch @@ -0,0 +1,70 @@ +From: Alejandro Colomar +Date: Fri, 14 Feb 2025 21:25:01 +0100 +Subject: Revert "lib/, src/: Use local time for human-readable dates" + +This reverts commit 3f5b4b56268269fefed55aa106f382037297d663. + +The dates are stored as UTC, and are stored as a number of days since +Epoch. We don't have enough precision to translate it into local time. +Using local time has caused endless issues in users. + +This patch is not enough for fixing this issue completely, since +printing a date without time-zone information means that the date is a +local date, but what we're printing is a UTC date. A future patch +should add time-zone information to the date. + +For now, let's revert this change that has caused so many issues. + +Fixes: 3f5b4b562682 (2024-08-01; "lib/, src/: Use local time for human-readable dates") +Link: +Link: +Link: +Link: +Link: +Link: +Link: +Link: +Link: +Link: +Reported-by: Chris Hofstaedtler +Reported-by: Gus Kenion +Reported-by: Alejandro Colomar +Reported-by: Michael Vetter +Reported-by: Lee Garrett +Cc: Paul Eggert +Cc: Tim Parenti +Cc: Iker Pedrosa +Cc: "Serge E. Hallyn" +Cc: Brian Inglis +Signed-off-by: Alejandro Colomar +--- + lib/time/day_to_str.h | 2 +- + src/chage.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/lib/time/day_to_str.h b/lib/time/day_to_str.h +index b70e989..fe3308d 100644 +--- a/lib/time/day_to_str.h ++++ b/lib/time/day_to_str.h +@@ -38,7 +38,7 @@ day_to_str(size_t size, char buf[size], long day) + return; + } + +- if (localtime_r(&date, &tm) == NULL) { ++ if (gmtime_r(&date, &tm) == NULL) { + strtcpy(buf, "future", size); + return; + } +diff --git a/src/chage.c b/src/chage.c +index a7933e0..67e7e77 100644 +--- a/src/chage.c ++++ b/src/chage.c +@@ -243,7 +243,7 @@ print_day_as_date(long day) + return; + } + +- if (localtime_r(&date, &tm) == NULL) { ++ if (gmtime_r(&date, &tm) == NULL) { + puts(_("future")); + return; + }