[packages/poldek] One more change to fix lp#1288989

megabajt megabajt at pld-linux.org
Sat Mar 15 21:56:58 CET 2014


commit 026e65b407e315577da9033ecfe97b0ec3539fb6
Author: Marcin Banasiak <marcin.banasiak at gmail.com>
Date:   Sat Mar 15 21:56:08 2014 +0100

    One more change to fix lp#1288989

 poldek-ignore-too-long-paths.patch | 53 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)
---
diff --git a/poldek-ignore-too-long-paths.patch b/poldek-ignore-too-long-paths.patch
index 9c25d54..c68176f 100644
--- a/poldek-ignore-too-long-paths.patch
+++ b/poldek-ignore-too-long-paths.patch
@@ -61,3 +61,56 @@ index 5ae167a..3983693 100644
          
          msg(5, "  %d: %s %s/%s \n", i, skipdirs[j] ? "add " : "skip",
              dirs[j], names[i]);
+
+diff --git a/pm/rpm/rpm_pkg_ld.c b/pm/rpm/rpm_pkg_ld.c
+index 3983693..51e339f 100644
+--- a/pm/rpm/rpm_pkg_ld.c
++++ b/pm/rpm/rpm_pkg_ld.c
+@@ -277,6 +277,7 @@ int pm_rpm_ldhdr_fl(tn_alloc *na, tn_tuple **fl,
+     int32_t   *diridxs;
+     uint32_t  *sizes;
+     uint16_t  *modes;
++    size_t    *dirslen = NULL;
+     struct    flfile *flfile;
+     struct    pkgfl_ent **fentdirs = NULL;
+     int       *fentdirs_items;
+@@ -329,11 +330,14 @@ int pm_rpm_ldhdr_fl(tn_alloc *na, tn_tuple **fl,
+     
+     skipdirs = alloca(sizeof(*skipdirs) * c2);
+     fentdirs = alloca(sizeof(*fentdirs) * c2);
++    dirslen = alloca(sizeof(size_t) * c2);
+     fentdirs_items = alloca(sizeof(*fentdirs_items) * c2);
+ 
+     /* skip unneded dirnames */
+     for (i=0; i<c2; i++) {
+         struct pkgfl_ent *flent;
++        
++        dirslen[i] = strlen(dirs[i]);
+ 
+         fentdirs_items[i] = 0;
+         if (!valid_fname(dirs[i], 0, pkgname)) {
+@@ -366,7 +370,7 @@ int pm_rpm_ldhdr_fl(tn_alloc *na, tn_tuple **fl,
+             if (diridxs[j] == i)
+                 fentdirs_items[i]++;
+         
+-        flent = pkgfl_ent_new(na, dirs[i], strlen(dirs[i]), fentdirs_items[i]);
++        flent = pkgfl_ent_new(na, dirs[i], dirslen[i], fentdirs_items[i]);
+         fentdirs[i] = flent;
+         ndirs++;
+     }
+@@ -388,6 +392,15 @@ int pm_rpm_ldhdr_fl(tn_alloc *na, tn_tuple **fl,
+         
+         flent = fentdirs[j];
+         len = strlen(names[i]);
++        
++        /* FIXME: ignore dirpaths longer then 255 characters lp#1288989 */
++        if (S_ISDIR(modes ? modes[i] : 0) && dirslen[j] + len > 254) {
++    	    if (poldek_VERBOSE > 1)
++    		logn(LOGWARN, _("%s: skipped dirname \"%s/%s\": longer than 255 bytes"),
++        	    pkgname, flent->dirname, names[i]);
++    	    continue;
++    	}
++        
+         if (symlinks) { 
+             flfile = flfile_new(na, sizes ? sizes[i] : 0,
+                                 modes ? modes[i] : 0,
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/poldek.git/commitdiff/026e65b407e315577da9033ecfe97b0ec3539fb6



More information about the pld-cvs-commit mailing list