[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