Source: libical3
Version: 3.0.20-1
Severity: normal
Tags: upstream patch
User: [email protected]
Usertags: i386

Dear Maintainer,

On 32-bit time_t builds (i386), make_time() in src/libical/icaltime.c rejects
any date after 2038-01-17 (cf. icaltime.c around line 107). This is two days
before the actual limit of a signed 32-bit time_t (2038-01-19T03:14:07 UTC,
INT32_MAX seconds since the epoch).

Rejected dates silently fall through as time_t 0 (1970-01-01) instead of the
correct value or an explicit error.

This directly causes the cyrus-imapd i386 FTBFS tracked in #1142273:
cyrus's icalrecurrenceset_get_utc_timespan() passes INT_MAX as an "unbounded
end" search sentinel to icalcomponent_foreach_recurrence().

On i386, that sentinel collapses to epoch, shrinking the search window to
nothing-after-1970 and silently excluding every occurrence — even for ordinary
events with no relation to 2038 at all.

Upstream fix, tested (i386 build: full regression suite passes, and
cyrus-imapd's actual failing cunit test now passes unmodified):

  4.0 branch: https://github.com/libical/libical/pull/1350
  3.0 branch: https://github.com/libical/libical/pull/1351

Note that Trixie tracks the version 3 branch; and also that upstream dev
`winterz` indicated [0] that it would be a good idea to patch it (without
cutting a new release for version 3).

I am not sure what the best way (or the Debian way) forward is. We could either
wait for upstream to accept the patches / pull requests; or we could just
cherry-pick the patches into Debian itself already.

This would resolve the i386 side of #1142273.

Kind regards,

    Edmund


[0]: https://github.com/libical/libical/pull/1351#issuecomment-5083969752


-- System Information:
Debian Release: 13.6
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 6.18.40-1-lts (SMP w/6 CPU threads; PREEMPT)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE, 
TAINT_UNSIGNED_MODULE
Locale: LANG=C.UTF-8, LC_CTYPE=C.UTF-8 (charmap=UTF-8) (ignored: LC_ALL set to 
C.UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: unable to detect


(The Kernel line above is from the container host, not a Debian kernel —
this was filed from a Debian trixie distrobox container where I build
Debian packages. Init: Systemd.)

Reply via email to