From 822c26c12e051b4127bc21a166896d269b03cd36 Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Mon, 18 Sep 2017 16:29:23 +0300 Subject: [PATCH] Fix Ftell() past 2GB on 32bit architectures (#1492587) --- ...GB-on-32bit-architectures-RhBug-1492.patch | 53 +++++++++++++++++++ rpm.spec | 6 ++- 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 0001-Fix-Ftell-past-2GB-on-32bit-architectures-RhBug-1492.patch diff --git a/0001-Fix-Ftell-past-2GB-on-32bit-architectures-RhBug-1492.patch b/0001-Fix-Ftell-past-2GB-on-32bit-architectures-RhBug-1492.patch new file mode 100644 index 0000000..7124aa2 --- /dev/null +++ b/0001-Fix-Ftell-past-2GB-on-32bit-architectures-RhBug-1492.patch @@ -0,0 +1,53 @@ +From 90802a894ad75df3a94edbe66a901fca006e65ee Mon Sep 17 00:00:00 2001 +Message-Id: <90802a894ad75df3a94edbe66a901fca006e65ee.1505741312.git.pmatilai@redhat.com> +From: Panu Matilainen +Date: Mon, 18 Sep 2017 16:10:03 +0300 +Subject: [PATCH] Fix Ftell() past 2GB on 32bit architectures (RhBug:1492587) + +Back in 2011 "somebody" forgot to apply brain when copying the return +type of "long" from ftell() to the Ftell() implementations within rpmio +(commit 61f5838aa849b8a75f7f08a33c868b518e1ccd44). + +Fast-forward six years and suddenly TexLive in Fedora no longer builds +on 32bit architectures due to that thinko, appearing to be a regression +in commit 7d1a303c456ce459cf550e8154fa4b6f29012b05. However that only +exposes the inner flaw of Ftell() as the code now relies on values +past the initial header range, for which the 2G of "long" has been more +than enough on 32bit architectures too. + +Doh, dude... + +diff --git a/rpmio/rpmio.c b/rpmio/rpmio.c +index 57e610185..d8b884085 100644 +--- a/rpmio/rpmio.c ++++ b/rpmio/rpmio.c +@@ -124,7 +124,7 @@ typedef int (*fdio_close_function_t) (FDSTACK_t fps); + typedef FD_t (*fdio_open_function_t) (const char * path, int flags, mode_t mode); + typedef FD_t (*fdio_fdopen_function_t) (FD_t fd, int fdno, const char * fmode); + typedef int (*fdio_fflush_function_t) (FDSTACK_t fps); +-typedef long (*fdio_ftell_function_t) (FDSTACK_t fps); ++typedef off_t (*fdio_ftell_function_t) (FDSTACK_t fps); + typedef int (*fdio_ferror_function_t) (FDSTACK_t fps); + typedef const char * (*fdio_fstrerr_function_t)(FDSTACK_t fps); + +@@ -410,7 +410,7 @@ static FD_t fdOpen(const char *path, int flags, mode_t mode) + return fd; + } + +-static long fdTell(FDSTACK_t fps) ++static off_t fdTell(FDSTACK_t fps) + { + return lseek(fps->fdno, 0, SEEK_CUR); + } +@@ -619,7 +619,7 @@ static int gzdClose(FDSTACK_t fps) + return (rc != 0) ? -1 : 0; + } + +-static long gzdTell(FDSTACK_t fps) ++static off_t gzdTell(FDSTACK_t fps) + { + off_t pos = -1; + gzFile gzfile = fps->fp; +-- +2.13.5 + diff --git a/rpm.spec b/rpm.spec index 585bd05..2facb8e 100644 --- a/rpm.spec +++ b/rpm.spec @@ -37,7 +37,7 @@ Summary: The RPM package management system Name: rpm Version: %{rpmver} -Release: %{?snapver:0.%{snapver}.}2%{?dist} +Release: %{?snapver:0.%{snapver}.}3%{?dist} Group: System Environment/Base Url: http://www.rpm.org/ Source0: http://ftp.rpm.org/releases/%{srcdir}/%{name}-%{srcver}.tar.bz2 @@ -60,6 +60,7 @@ Patch4: rpm-4.8.1-use-gpg2.patch Patch5: rpm-4.12.0-rpm2cpio-hack.patch # Patches already upstream: +Patch100: 0001-Fix-Ftell-past-2GB-on-32bit-architectures-RhBug-1492.patch # These are not yet upstream Patch906: rpm-4.7.1-geode-i686.patch @@ -627,6 +628,9 @@ make check %doc doc/librpm/html/* %changelog +* Mon Sep 18 2017 Panu Matilainen - 4.14.0-0.rc1.3 +- Fix Ftell() past 2GB on 32bit architectures (#1492587) + * Thu Sep 07 2017 Panu Matilainen - 4.14.0-0.rc1.2 - Actually honor with/without libimaevm option - ima-evm-utils-devel >= 1.0 is required for rpm >= 4.14.0