]> git.pld-linux.org Git - packages/poldek.git/commitdiff
One more change to fix lp#1288989
authorMarcin Banasiak <marcin.banasiak@gmail.com>
Sat, 15 Mar 2014 20:56:08 +0000 (21:56 +0100)
committerMarcin Banasiak <marcin.banasiak@gmail.com>
Sat, 15 Mar 2014 20:56:08 +0000 (21:56 +0100)
poldek-ignore-too-long-paths.patch

index 9c25d545e8fc89e7af1c575d958f4e4e038ff32e..c68176f8bd39fb9ac2d884ac304bbfdfebfc4148 100644 (file)
@@ -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,
This page took 0.374403 seconds and 4 git commands to generate.