Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock
Please consider unblocking version 1.22 of datefudge, which has been in unstable for last two months without new bugs reported. It uses time_t instad of int for internal representation of date and (conditionally) atoll() instead of atoi() for conversions to fix an issue with dates wrapping on 64-bit systems (for example `datefudge 2100-12-12 date` now works correctly, while the version 1.21 shows a date in November 1964). Note that there is a minor typo in changelog: it should mention standards-version 3.9.8, instead of 3.9.6. diff -Nru datefudge-1.21/debian/changelog datefudge-1.22/debian/changelog --- datefudge-1.21/debian/changelog 2016-02-13 15:19:54.000000000 +0100 +++ datefudge-1.22/debian/changelog 2017-02-04 22:59:11.000000000 +0100 @@ -1,3 +1,16 @@ +datefudge (1.22) unstable; urgency=medium + + * datefudge.c: Apply the following fixes from Thorsten Glaser + (closes: #853724): + + Operate more efficiently, especially if fudging to the epoch. + + Fix running on 32-bit systems with 64-bit time_t (such as x32). + * datefudge.man: Document that datefudge might be affected by the + Y2K38 problem on some systems. + * Use https in Vcs-Git and switch Vcs-Browser to cgit. + * Standards-Version: 3.9.6 (no changes). + + -- Robert Luberda <rob...@debian.org> Sat, 04 Feb 2017 22:59:11 +0100 + datefudge (1.21) unstable; urgency=medium * datefudge.sh: don't fail when its date argument happens to be equal @@ -83,7 +96,7 @@ * New maintainer (closes: #429467). * Standards-Version: 3.7.3 (no changes). * Use debhelper v7 and its minimised rules file. - * datefudge.c: override clock_gettime(2) called with CLOCK_REALTIME + * datefudge.c: override clock_gettime(2) called with CLOCK_REALTIME argument to make it possible to fake `date' command (closes: #416175). * Update man page, add a simple example. @@ -189,4 +202,3 @@ * BitKeeper file /var/tmp/b.s.10098/ChangeSet -- Matthias Urlichs <sm...@noris.de> 14 Mar 2002 12:12:31 +0200 - diff -Nru datefudge-1.21/debian/control datefudge-1.22/debian/control --- datefudge-1.21/debian/control 2016-02-13 15:19:54.000000000 +0100 +++ datefudge-1.22/debian/control 2017-02-04 22:59:11.000000000 +0100 @@ -2,10 +2,10 @@ Section: devel Priority: optional Maintainer: Robert Luberda <rob...@debian.org> -Standards-Version: 3.9.6 +Standards-Version: 3.9.8 Build-Depends: debhelper (>= 9) -Vcs-Git: git://anonscm.debian.org/users/robert/datefudge.git -Vcs-Browser: https://anonscm.debian.org/gitweb/?p=users/robert/datefudge.git;a=summary +Vcs-Git: https://anonscm.debian.org/git/users/robert/datefudge.git +Vcs-Browser: https://anonscm.debian.org/cgit/users/robert/datefudge.git/ Package: datefudge Architecture: any diff -Nru datefudge-1.21/datefudge.c datefudge-1.22/datefudge.c --- datefudge-1.21/datefudge.c 2016-02-13 15:19:54.000000000 +0100 +++ datefudge-1.22/datefudge.c 2017-02-04 22:59:11.000000000 +0100 @@ -15,22 +15,25 @@ #include <dlfcn.h> #include <assert.h> #include <features.h> +#include <stdbool.h> #include <unistd.h> #include <time.h> #include <sys/time.h> -static int fudge = 0; -static int dostatic = 0; +static time_t fudge = 0; +static bool dostatic = false; +static bool fudge_set = false; -static void init_fudge (void) { - const char *fud; - - if(fudge)return; - - fud = getenv("DATEFUDGE"); +static void init_fudge (void) +{ + const char * const fud = getenv("DATEFUDGE"); if(fud == NULL) return; - fudge = atoi(fud); + if (sizeof(time_t) <= sizeof(int)) + fudge = atoi(fud); + else + fudge = atoll(fud); dostatic = getenv("DATEFUDGE_DOSTATIC") != NULL; + fudge_set = true; } static void set_fudge(time_t *seconds) @@ -38,7 +41,8 @@ if (!seconds) return; - init_fudge(); + if (!fudge_set) + init_fudge(); if (dostatic) *seconds = fudge; @@ -74,8 +78,8 @@ return 0; } -int gettimeofday(struct timeval *x, struct timezone *y) { - return __gettimeofday(x,y); +int gettimeofday(struct timeval *x, struct timezone *y) { + return __gettimeofday(x,y); } #ifndef __GNU__ diff -Nru datefudge-1.21/datefudge.man datefudge-1.22/datefudge.man --- datefudge-1.21/datefudge.man 2016-02-13 15:19:54.000000000 +0100 +++ datefudge-1.22/datefudge.man 2017-02-04 22:59:11.000000000 +0100 @@ -1,5 +1,5 @@ .\" vim:ft=nroff -.TH DATEFUDGE "1" "February 13th, 2016" "datefudge @VERSION@" Debian +.TH DATEFUDGE "1" "February 4th, 2017" "datefudge @VERSION@" Debian .SH NAME datefudge \- pretend the system time is different .SH SYNOPSIS @@ -50,10 +50,17 @@ .SH BUGS There is no attempt to make this change undetectable by the program. In particular, file modification times are \fBnot\fR modified. +.PP +On systems using 32-bit representation of time, \fBdatefudge\fR is affected by the year +2038 problem, which might cause dates to be wrapped around, for instance: +.nf +\fI$ TZ=UTC datefudge "\fB2038\fR\fI\-01\-19 03:14:07" sh \-c "sleep 1; date \-R"\fR +Fri Dec 13 20:45:53 UTC \fB1901\fR +.fi .SH COPYRIGHT Copyright \(co 2003 by Matthias Urlichs. .br -Copyright \(co 2008-2016 by Robert Luberda. +Copyright \(co 2008-2017 by Robert Luberda. .PP There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. You may redistribute copies of datefudge under the unblock datefudge/1.22 -- System Information: Debian Release: 9.0 APT prefers unstable APT policy: (500, 'unstable'), (500, 'testing') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 4.9.0-2-amd64 (SMP w/4 CPU cores) Locale: LANG=pl_PL.UTF-8, LC_CTYPE=pl_PL.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system)