[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