[rpm] - account for intentionally skipped files when verifying hardlinks (#864622)
Panu Matilainen
pmatilai at fedoraproject.org
Wed Oct 10 07:42:36 UTC 2012
commit 240842c0b06a1e73de36342a3d110686be8d747f
Author: Panu Matilainen <pmatilai at redhat.com>
Date: Wed Oct 10 10:41:57 2012 +0300
- account for intentionally skipped files when verifying hardlinks (#864622)
rpm-4.10.1-skipped-hardlinks.patch | 32 ++++++++++++++++++++++++++++++++
rpm.spec | 8 +++++++-
2 files changed, 39 insertions(+), 1 deletions(-)
---
diff --git a/rpm-4.10.1-skipped-hardlinks.patch b/rpm-4.10.1-skipped-hardlinks.patch
new file mode 100644
index 0000000..567480d
--- /dev/null
+++ b/rpm-4.10.1-skipped-hardlinks.patch
@@ -0,0 +1,32 @@
+commit df4eed5debcdc9209e1f5e66d17230861a55a7fc
+Author: Panu Matilainen <pmatilai at redhat.com>
+Date: Wed Oct 10 10:37:34 2012 +0300
+
+ Filter out skipped files on hardlink checking (RhBug:864622)
+
+ - Legitimately skipped files (links) must not cause install-errors.
+ This has always been broken, but the errors were completely ignored
+ on install prior to rpm 4.10.
+ - Backported from commit eeea54c76b130da3769ae10f7db2c2fcfb5c57be
+
+diff --git a/lib/fsm.c b/lib/fsm.c
+index e4ffcaf..4840708 100644
+--- a/lib/fsm.c
++++ b/lib/fsm.c
+@@ -1964,12 +1964,14 @@ static int fsmStage(FSM_t fsm, fileStage stage)
+ fsm->links = fsm->li->next;
+ fsm->li->next = NULL;
+ if (fsm->goal == FSM_PKGINSTALL && fsm->li->linksLeft) {
++ rpmfs fs = rpmteGetFileStates(fsmGetTe(fsm));
+ for (nlink_t i = 0 ; i < fsm->li->linksLeft; i++) {
+- if (fsm->li->filex[i] < 0)
++ int ix = fsm->li->filex[i];
++ if (ix < 0 || XFA_SKIPPING(rpmfsGetAction(fs, ix)))
+ continue;
+ rc = CPIOERR_MISSING_HARDLINK;
+ if (fsm->failedFile && *fsm->failedFile == NULL) {
+- fsm->ix = fsm->li->filex[i];
++ fsm->ix = ix;
+ if (!fsmMapPath(fsm)) {
+ /* Out-of-sync hardlinks handled as sub-state */
+ *fsm->failedFile = fsm->path;
diff --git a/rpm.spec b/rpm.spec
index 39f6c04..79b216c 100644
--- a/rpm.spec
+++ b/rpm.spec
@@ -21,7 +21,7 @@
Summary: The RPM package management system
Name: rpm
Version: %{rpmver}
-Release: %{?snapver:0.%{snapver}.}1%{?dist}
+Release: %{?snapver:0.%{snapver}.}2%{?dist}
Group: System Environment/Base
Url: http://www.rpm.org/
Source0: http://rpm.org/releases/rpm-4.10.x/%{name}-%{srcver}.tar.bz2
@@ -45,6 +45,7 @@ Patch5: rpm-4.9.90-armhfp.patch
Patch6: rpm-4.9.0-armhfp-logic.patch
# Patches already in upstream
+Patch100: rpm-4.10.1-skipped-hardlinks.patch
# These are not yet upstream
Patch301: rpm-4.6.0-niagara.patch
@@ -218,6 +219,8 @@ packages on a system.
%patch3 -p1 -b .no-man-dirs
%patch4 -p1 -b .use-gpg2
+%patch100 -p1 -b .skipped-hardlinks
+
%patch301 -p1 -b .niagara
%patch302 -p1 -b .geode
%patch304 -p1 -b .ldflags
@@ -448,6 +451,9 @@ exit 0
%doc COPYING doc/librpm/html/*
%changelog
+* Wed Oct 10 2012 Panu Matilainen <pmatilai at redhat.com> - 4.10.1-2
+- account for intentionally skipped files when verifying hardlinks (#864622)
+
* Wed Oct 03 2012 Panu Matilainen <pmatilai at redhat.com> - 4.10.1-1
- update to 4.10.1 ((http://rpm.org/wiki/Releases/4.10.1)
More information about the scm-commits
mailing list