Bug 2174758 - GNUTLS 3.8.0 changed ABI on i686 breaking all APIs using time_t
Summary: GNUTLS 3.8.0 changed ABI on i686 breaking all APIs using time_t
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: gnutls
Version: 36
Hardware: i686
OS: Unspecified
unspecified
urgent
Target Milestone: ---
Assignee: Red Hat Crypto Team
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2023-03-02 11:52 UTC by Daniel Berrangé
Modified: 2023-03-18 05:01 UTC (History)
7 users (show)

Fixed In Version: gnutls-3.8.0-2.fc37 gnutls-3.8.0-2.fc38 gnutls-3.8.0-2.fc36
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2023-03-06 02:14:57 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker FC-773 0 None None None 2023-03-02 11:56:22 UTC

Description Daniel Berrangé 2023-03-02 11:52:48 UTC
Description of problem:
With the 3.8.0 release of GNUTLS, the public API has broken ABI compatibility on 32-bit platforms which have glibc >= 2.34 present.

The issue affects any GNUTLS API that uses the time_t type.  We detected this because it broken all the libvirt and QEMU unit tests which generate certificates, with errors about the certificate not being active yet.

The problem arose because GNULIB has changed the 'largefile' module so that it probes for the C library exposing _TIME_BITS=64, and if available will set that define. This results in time_t changing from 32-bit in size to 64-bit when gnutls is 
built.

Meanwhile essentially no application that uses GNUTLS will have _TIME_BITS=64 set, and thus they will all be passing/receiving time with a 32-bit time_t.

This means that any application interacting with GNUTLS APIs that involve time_t will be broken on 32-bit hosts with glibc >= 2.34 (when _TIME_BITS=64 arrived).

GNULIB did provide a '--disable-year2038' flag for configure which can be used at build time to disable 64-bit time_t. Essentially everyone who builds GNUTLS today needs to be sure to pass --disable-year2038 to avoid the silent ABI change.

Upstream report with a demo program is https://gitlab.com/gnutls/gnutls/-/issues/1466

--disable-year2038 needs to be added to all Fedora branches

Version-Release number of selected component (if applicable):
gnutls-3.8.0-1.fc37.i686

But affects all Fedora branches with the 3.8.0 rebase (f36, f37, f38, rawhide)

How reproducible:
Always on i686 hosts

Steps to Reproduce:
1. See demo program in upstream bug

Actual results:


Expected results:


Additional info:

Comment 1 Fedora Update System 2023-03-03 09:56:45 UTC
FEDORA-2023-4fc4c33f2b has been submitted as an update to Fedora 36. https://bodhi.fedoraproject.org/updates/FEDORA-2023-4fc4c33f2b

Comment 2 Fedora Update System 2023-03-03 09:57:56 UTC
FEDORA-2023-5b378b82b3 has been submitted as an update to Fedora 38. https://bodhi.fedoraproject.org/updates/FEDORA-2023-5b378b82b3

Comment 3 Fedora Update System 2023-03-03 09:58:13 UTC
FEDORA-2023-35d7f1018d has been submitted as an update to Fedora 37. https://bodhi.fedoraproject.org/updates/FEDORA-2023-35d7f1018d

Comment 4 Fedora Update System 2023-03-06 02:14:57 UTC
FEDORA-2023-35d7f1018d has been pushed to the Fedora 37 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 5 Fedora Update System 2023-03-14 00:17:01 UTC
FEDORA-2023-5b378b82b3 has been pushed to the Fedora 38 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 6 Fedora Update System 2023-03-18 05:01:17 UTC
FEDORA-2023-4fc4c33f2b has been pushed to the Fedora 36 stable repository.
If problem still persists, please make note of it in this bug report.


Note You need to log in before you can comment on or make changes to this bug.