Fix Ftell() past 2GB on 32bit architectures (#1492587)
This commit is contained in:
parent
aa109fa4c6
commit
822c26c12e
@ -0,0 +1,53 @@
|
|||||||
|
From 90802a894ad75df3a94edbe66a901fca006e65ee Mon Sep 17 00:00:00 2001
|
||||||
|
Message-Id: <90802a894ad75df3a94edbe66a901fca006e65ee.1505741312.git.pmatilai@redhat.com>
|
||||||
|
From: Panu Matilainen <pmatilai@redhat.com>
|
||||||
|
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
|
||||||
|
|
6
rpm.spec
6
rpm.spec
@ -37,7 +37,7 @@
|
|||||||
Summary: The RPM package management system
|
Summary: The RPM package management system
|
||||||
Name: rpm
|
Name: rpm
|
||||||
Version: %{rpmver}
|
Version: %{rpmver}
|
||||||
Release: %{?snapver:0.%{snapver}.}2%{?dist}
|
Release: %{?snapver:0.%{snapver}.}3%{?dist}
|
||||||
Group: System Environment/Base
|
Group: System Environment/Base
|
||||||
Url: http://www.rpm.org/
|
Url: http://www.rpm.org/
|
||||||
Source0: http://ftp.rpm.org/releases/%{srcdir}/%{name}-%{srcver}.tar.bz2
|
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
|
Patch5: rpm-4.12.0-rpm2cpio-hack.patch
|
||||||
|
|
||||||
# Patches already upstream:
|
# Patches already upstream:
|
||||||
|
Patch100: 0001-Fix-Ftell-past-2GB-on-32bit-architectures-RhBug-1492.patch
|
||||||
|
|
||||||
# These are not yet upstream
|
# These are not yet upstream
|
||||||
Patch906: rpm-4.7.1-geode-i686.patch
|
Patch906: rpm-4.7.1-geode-i686.patch
|
||||||
@ -627,6 +628,9 @@ make check
|
|||||||
%doc doc/librpm/html/*
|
%doc doc/librpm/html/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Sep 18 2017 Panu Matilainen <pmatilai@redhat.com> - 4.14.0-0.rc1.3
|
||||||
|
- Fix Ftell() past 2GB on 32bit architectures (#1492587)
|
||||||
|
|
||||||
* Thu Sep 07 2017 Panu Matilainen <pmatilai@redhat.com> - 4.14.0-0.rc1.2
|
* Thu Sep 07 2017 Panu Matilainen <pmatilai@redhat.com> - 4.14.0-0.rc1.2
|
||||||
- Actually honor with/without libimaevm option
|
- Actually honor with/without libimaevm option
|
||||||
- ima-evm-utils-devel >= 1.0 is required for rpm >= 4.14.0
|
- ima-evm-utils-devel >= 1.0 is required for rpm >= 4.14.0
|
||||||
|
Loading…
Reference in New Issue
Block a user