Bug#907348: fixed in dateutils 0.4.5-1
On Wed, 10 Jul 2019, Gianfranco Costamagna wrote: I'm uploading this fix in deferred/10, please Thorsten let me know if I can speed it up! yes, please do as fast as you want to. I also rebased the patch and forwarded it upstream, since nobody did it so far. Thanks a lot. Thorsten
Bug#907348: fixed in dateutils 0.4.5-1
control: forwarded -1 https://github.com/hroptatyr/dateutils/pull/103 On Wed, 8 May 2019 01:01:24 +0200 =?UTF-8?Q?Bernhard_=c3=9cbelacker?= wrote: > Control: tags 907348 + patch upstream > > > Dear Maintainer, > I tried to have a look and tracked it down into the file > lib/leap-seconds.def which is generated by ltrcc. > > Unfortunately this generator seems not prepared for at least i386. > > With attached patch the generated file is equal to one > generated at amd64, and the tests pass on both architectures. > > Could not find an matching upstream bug. > I'm uploading this fix in deferred/10, please Thorsten let me know if I can speed it up! I also rebased the patch and forwarded it upstream, since nobody did it so far. patch attached G. diff -Nru dateutils-0.4.5/debian/changelog dateutils-0.4.5/debian/changelog --- dateutils-0.4.5/debian/changelog2018-10-17 19:59:01.0 +0200 +++ dateutils-0.4.5/debian/changelog2019-07-10 09:12:59.0 +0200 @@ -1,3 +1,14 @@ +dateutils (0.4.5-1.1) unstable; urgency=medium + + [ Gianfranco Costamagna ] + * Non-maintainer upload + + [ Bernhard Übelacker ] + * debian/patches/0001-Use-unsigned-type-for-leap-second- +conversion.patch: Fix 32bit builds (Closes: #907348) + + -- Gianfranco Costamagna Wed, 10 Jul 2019 09:12:59 +0200 + dateutils (0.4.5-1) unstable; urgency=medium * New upstream release (Closes: #907348, #909031) diff -Nru dateutils-0.4.5/debian/patches/0001-Use-unsigned-type-for-leap-second-conversion.patch dateutils-0.4.5/debian/patches/0001-Use-unsigned-type-for-leap-second-conversion.patch --- dateutils-0.4.5/debian/patches/0001-Use-unsigned-type-for-leap-second-conversion.patch 1970-01-01 01:00:00.0 +0100 +++ dateutils-0.4.5/debian/patches/0001-Use-unsigned-type-for-leap-second-conversion.patch 2019-07-10 09:12:59.0 +0200 @@ -0,0 +1,154 @@ +From 6f653805ee528e9068d3108af7227dea685f88ed Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Bernhard=20=C3=9Cbelacker?= +Date: Tue, 7 May 2019 19:13:21 +0200 +Subject: [PATCH] Use unsigned type for leap second conversion. + +https://bugs.debian.org/907348 +--- + lib/ltrcc.c | 40 + 1 file changed, 20 insertions(+), 20 deletions(-) + +diff --git a/lib/ltrcc.c b/lib/ltrcc.c +index 20c0e38..11c8a74 100644 +--- a/lib/ltrcc.c b/lib/ltrcc.c +@@ -55,10 +55,10 @@ + #include "version.c" + + +-static __attribute__((pure, const)) long int +-ntp_to_unix_epoch(long int x) ++static __attribute__((pure, const)) unsigned long int ++ntp_to_unix_epoch(unsigned long int x) + { +- return x - 25567L * 86400L; ++ return x - 25567U * 86400U; + } + + +@@ -68,7 +68,7 @@ ntp_to_unix_epoch(long int x) + static int + pr_line_corr(const char *line, size_t llen, va_list UNUSED(vap)) + { +- static long int cor; ++ static unsigned long int cor; + char *sp, *ep; + + if (llen == PROLOGUE) { +@@ -96,7 +96,7 @@ const int32_t %s[] = {\n\ + /* otherwise process */ + if ((sp = memchr(line, '\t', llen)) == NULL) { + return -1; +- } else if ((ep = NULL, cor = strtol(++sp, &ep, 10), ep == NULL)) { ++ } else if ((ep = NULL, cor = strtoul(++sp, &ep, 10), ep == NULL || cor == ULONG_MAX)) { + return -1; + } + +@@ -108,10 +108,10 @@ const int32_t %s[] = {\n\ + static int + pr_line_d(const char *line, size_t llen, va_list vap) + { +- static long int cor; ++ static unsigned long int cor; + struct dt_d_s d; + dt_dtyp_t typ; +- long int val; ++ unsigned long int val; + int colp; + char *ep; + +@@ -155,7 +155,7 @@ const uint32_t %s[] = {\n\ + return 0; + } + /* otherwise process */ +- if ((ep = NULL, val = strtol(line, &ep, 10), ep == NULL)) { ++ if ((ep = NULL, val = strtoul(line, &ep, 10), ep == NULL || val == ULONG_MAX)) { + return -1; + } + +@@ -164,7 +164,7 @@ const uint32_t %s[] = {\n\ + d = dt_dconv(typ, d); + + if (!colp) { +- if ((cor = strtol(ep, &ep, 10), ep == NULL)) { ++ if ((cor = strtoul(ep, &ep, 10), ep == NULL || val == ULONG_MAX)) { + return -1; + } + /* just output the line then */ +@@ -179,9 +179,9 @@ const uint32_t %s[] = {\n\ + static int + pr_line_dt(const char *line, size_t llen, va_list vap) + { +- static long int cor; ++ static unsigned long int cor; + dt_dtyp_t __attribute__((unused)) typ; +- long int val; ++ unsigned long int val; + int colp; + char *ep; + +@@ -225,7 +225,7 @@ const int32_t %s[] = {\n\ + return 0; + } + /* otherwise process */ +- if ((ep = NULL, val = strtol(line, &ep, 10), ep == NULL)) { ++ if ((ep = NULL, val = strtoul(line, &ep, 10), ep == NULL || val == ULONG_MAX)) { + return -1; + } + +@@ -234,15 +234,15 @@ const int32_t %s[]
Bug#907348: fixed in dateutils 0.4.5-1
Control: tags 907348 + patch upstream Dear Maintainer, I tried to have a look and tracked it down into the file lib/leap-seconds.def which is generated by ltrcc. Unfortunately this generator seems not prepared for at least i386. With attached patch the generated file is equal to one generated at amd64, and the tests pass on both architectures. Could not find an matching upstream bug. Kind regards, Bernhard >From 6f653805ee528e9068d3108af7227dea685f88ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernhard=20=C3=9Cbelacker?= Date: Tue, 7 May 2019 19:13:21 +0200 Subject: [PATCH] Use unsigned type for leap second conversion. https://bugs.debian.org/907348 --- lib/ltrcc.c | 40 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/lib/ltrcc.c b/lib/ltrcc.c index 20c0e38..11c8a74 100644 --- a/lib/ltrcc.c +++ b/lib/ltrcc.c @@ -55,10 +55,10 @@ #include "version.c" -static __attribute__((pure, const)) long int -ntp_to_unix_epoch(long int x) +static __attribute__((pure, const)) unsigned long int +ntp_to_unix_epoch(unsigned long int x) { - return x - 25567L * 86400L; + return x - 25567U * 86400U; } @@ -68,7 +68,7 @@ ntp_to_unix_epoch(long int x) static int pr_line_corr(const char *line, size_t llen, va_list UNUSED(vap)) { - static long int cor; + static unsigned long int cor; char *sp, *ep; if (llen == PROLOGUE) { @@ -96,7 +96,7 @@ const int32_t %s[] = {\n\ /* otherwise process */ if ((sp = memchr(line, '\t', llen)) == NULL) { return -1; - } else if ((ep = NULL, cor = strtol(++sp, &ep, 10), ep == NULL)) { + } else if ((ep = NULL, cor = strtoul(++sp, &ep, 10), ep == NULL || cor == ULONG_MAX)) { return -1; } @@ -108,10 +108,10 @@ const int32_t %s[] = {\n\ static int pr_line_d(const char *line, size_t llen, va_list vap) { - static long int cor; + static unsigned long int cor; struct dt_d_s d; dt_dtyp_t typ; - long int val; + unsigned long int val; int colp; char *ep; @@ -155,7 +155,7 @@ const uint32_t %s[] = {\n\ return 0; } /* otherwise process */ - if ((ep = NULL, val = strtol(line, &ep, 10), ep == NULL)) { + if ((ep = NULL, val = strtoul(line, &ep, 10), ep == NULL || val == ULONG_MAX)) { return -1; } @@ -164,7 +164,7 @@ const uint32_t %s[] = {\n\ d = dt_dconv(typ, d); if (!colp) { - if ((cor = strtol(ep, &ep, 10), ep == NULL)) { + if ((cor = strtoul(ep, &ep, 10), ep == NULL || val == ULONG_MAX)) { return -1; } /* just output the line then */ @@ -179,9 +179,9 @@ const uint32_t %s[] = {\n\ static int pr_line_dt(const char *line, size_t llen, va_list vap) { - static long int cor; + static unsigned long int cor; dt_dtyp_t __attribute__((unused)) typ; - long int val; + unsigned long int val; int colp; char *ep; @@ -225,7 +225,7 @@ const int32_t %s[] = {\n\ return 0; } /* otherwise process */ - if ((ep = NULL, val = strtol(line, &ep, 10), ep == NULL)) { + if ((ep = NULL, val = strtoul(line, &ep, 10), ep == NULL || val == ULONG_MAX)) { return -1; } @@ -234,15 +234,15 @@ const int32_t %s[] = {\n\ val = ntp_to_unix_epoch(val); if (!colp) { - if ((cor = strtol(ep, &ep, 10), ep == NULL)) { + if ((cor = strtoul(ep, &ep, 10), ep == NULL || cor == ULONG_MAX)) { return -1; } /* just output the line then */ - fprintf(stdout, "\t{0x%xU/* %li */, %li},\n", - (uint32_t)val, val, cor); + fprintf(stdout, "\t{0x%lxU/* %li */, %li},\n", + val, val, cor); } else { /* column-oriented mode */ - fprintf(stdout, "\t0x%xU/* %li */,\n", (uint32_t)val, val); + fprintf(stdout, "\t0x%lxU/* %li */,\n", val, val); } return 0; } @@ -250,12 +250,12 @@ const int32_t %s[] = {\n\ static int pr_line_t(const char *line, size_t llen, va_list vap) { - static long int cor; + static unsigned long int cor; struct dt_t_s t = dt_t_initialiser(); dt_dtyp_t typ; int colp; char *ep; - long int val; + unsigned long int val; /* extract type from inner list */ typ = va_arg(vap, dt_dtyp_t); @@ -292,7 +292,7 @@ const uint32_t %s[] = {\n\ return 0; } /* otherwise process */ - if ((ep = NULL, val = strtol(line, &ep, 10), ep == NULL)) { + if ((ep = NULL, val = strtoul(line, &ep, 10), ep == NULL || val == ULONG_MAX)) { return -1; } val--; @@ -303,7 +303,7 @@ const uint32_t %s[] = {\n\ t.hms.h = val % 24L; /* read correction */ - if ((val = strtol(ep, &ep, 10), ep == NULL)) { + if ((val = strtoul(ep, &ep, 10), ep == NULL || val == ULONG_MAX)) { return -1; } -- 2.20.1 # Unstable i386 qemu VM 2019-05-07 # Unstable amd64 qemu VM 2019-05-07 apt update apt dist-upgrade apt install systemd-coredump fakeroot gdb git strace apt build-dep dateutils mkdir /home/benutzer/source/dateutils/orig -p cd/home/benutzer/source/dateutils/orig apt source dateutils cd cd /home/benutzer/source/dateutils cp orig try1 -a cd try1/dateutils-0.4.5 dpkg-buildpackage i386: # TOTAL: 855 # PASS: 841 # SKIP: 0 # XFAIL: 0
Bug#907348: closed by Thorsten Alteholz (Bug#907348: fixed in dateutils 0.4.5-1)
Control: reopen -1 On Wed, Oct 17, 2018 at 09:33:03PM +, Debian Bug Tracking System wrote: >... > dateutils (0.4.5-1) unstable; urgency=medium > . >* New upstream release (Closes: #907348, #909031) >... Still FTBFS: https://buildd.debian.org/status/package.php?p=dateutils&suite=sid cu Adrian -- "Is there not promise of rain?" Ling Tan asked suddenly out of the darkness. There had been need of rain for many days. "Only a promise," Lao Er said. Pearl S. Buck - Dragon Seed