[rpm] - fix recursion of directories with trailing slash in file list (#722474)

Panu Matilainen pmatilai at fedoraproject.org
Tue Jul 19 08:28:27 UTC 2011


commit c81abc1f8e4a45bb0d75e47391069b84d6ca4664
Author: Panu Matilainen <pmatilai at redhat.com>
Date:   Tue Jul 19 11:22:49 2011 +0300

    - fix recursion of directories with trailing slash in file list (#722474)

 rpm-4.9.1-recurse-dir.patch |   43 +++++++++++++++++++++++++++++++++++++++++++
 rpm.spec                    |    8 +++++++-
 2 files changed, 50 insertions(+), 1 deletions(-)
---
diff --git a/rpm-4.9.1-recurse-dir.patch b/rpm-4.9.1-recurse-dir.patch
new file mode 100644
index 0000000..48482ab
--- /dev/null
+++ b/rpm-4.9.1-recurse-dir.patch
@@ -0,0 +1,43 @@
+commit 27c56c58209ee7c890f34429e030bfdb39105084
+Author: Panu Matilainen <pmatilai at redhat.com>
+Date:   Mon Jun 27 12:41:39 2011 +0300
+
+    Remove ugly isDir recurse prevention hack on build
+    
+    - We know if we're already fts-walking by the way addFile() gets called,
+      dont corrupt fl->isDir for no good reason.
+    (cherry picked from commit aedbf1d63f94cee312b283503c8deb1ede1895a1)
+
+diff --git a/build/files.c b/build/files.c
+index b4b893a..edba92a 100644
+--- a/build/files.c
++++ b/build/files.c
+@@ -1394,8 +1394,8 @@ static rpmRC addFile(FileList fl, const char * diskPath,
+ 	}
+     }
+ 
+-    if ((! fl->isDir) && S_ISDIR(statp->st_mode)) {
+-/* FIX: fl->buildRoot may be NULL */
++    /* Don't recurse into explicit %dir, don't double-recurse from fts */
++    if ((fl->isDir != 1) && (statp == &statbuf) && S_ISDIR(statp->st_mode)) {
+ 	return recurseDir(fl, diskPath);
+     }
+ 
+@@ -1529,8 +1529,6 @@ static rpmRC recurseDir(FileList fl, const char * diskPath)
+     int myFtsOpts = (FTS_COMFOLLOW | FTS_NOCHDIR | FTS_PHYSICAL);
+     rpmRC rc = RPMRC_FAIL;
+ 
+-    fl->isDir = 1;  /* Keep it from following myftw() again         */
+-
+     ftsSet[0] = (char *) diskPath;
+     ftsSet[1] = NULL;
+     ftsp = Fts_open(ftsSet, myFtsOpts, NULL);
+@@ -1563,8 +1561,6 @@ static rpmRC recurseDir(FileList fl, const char * diskPath)
+     }
+     (void) Fts_close(ftsp);
+ 
+-    fl->isDir = 0;
+-
+     return rc;
+ }
+ 
diff --git a/rpm.spec b/rpm.spec
index cdb8da9..0864776 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.9.x/%{name}-%{srcver}.tar.bz2
@@ -40,6 +40,7 @@ Patch3: rpm-4.8.0-no-man-dirs.patch
 Patch4: rpm-4.8.1-use-gpg2.patch
 
 # Patches already in upstream
+Patch200: rpm-4.9.1-recurse-dir.patch
 
 # These are not yet upstream
 Patch301: rpm-4.6.0-niagara.patch
@@ -207,6 +208,8 @@ packages on a system.
 %patch3 -p1 -b .no-man-dirs
 %patch4 -p1 -b .use-gpg2
 
+%patch200 -p1 -b .recurse-dir
+
 %patch301 -p1 -b .niagara
 %patch302 -p1 -b .geode
 %patch303 -p1 -b .debuginfo-allnames
@@ -423,6 +426,9 @@ exit 0
 %doc COPYING doc/librpm/html/*
 
 %changelog
+* Tue Jul 19 2011 Panu Matilainen <pmatilai at redhat.com> - 4.9.1-2
+- fix recursion of directories with trailing slash in file list (#722474)
+
 * Fri Jul 15 2011 Panu Matilainen <pmatilai at redhat.com> - 4.9.1-1
 - update to 4.9.1 (http://rpm.org/wiki/Releases/4.9.1)
 - drop no longer needed patches


More information about the scm-commits mailing list