[packages/poldek] Ignore paths longer than 255 characters (lp#1288989). Release 7
megabajt
megabajt at pld-linux.org
Thu Mar 13 23:43:12 CET 2014
commit 5d6ede248c1e05b26a4938d4f13665b187605e0f
Author: Marcin Banasiak <marcin.banasiak at gmail.com>
Date: Thu Mar 13 23:42:42 2014 +0100
Ignore paths longer than 255 characters (lp#1288989). Release 7
poldek-ignore-too-long-paths.patch | 63 ++++++++++++++++++++++++++++++++++++++
poldek.spec | 4 ++-
2 files changed, 66 insertions(+), 1 deletion(-)
---
diff --git a/poldek.spec b/poldek.spec
index 952dd67..8817c09 100644
--- a/poldek.spec
+++ b/poldek.spec
@@ -22,7 +22,7 @@
%endif
%define ver_rpm 5.4.10
-%define rel 6
+%define rel 7
Summary: RPM packages management helper tool
Summary(hu.UTF-8): RPM csomagkezelést segítő eszköz
Summary(pl.UTF-8): Pomocnicze narzędzie do zarządzania pakietami RPM
@@ -50,6 +50,7 @@ Patch0: %{name}-size-type.patch
Patch1: %{name}-Os-fail-workaround.patch
Patch2: %{name}-config.patch
Patch3: at-char-completion.patch
+Patch4: %{name}-ignore-too-long-paths.patch
URL: http://poldek.pld-linux.org/
BuildRequires: %{db_pkg}-devel >= %{ver_db}-%{ver_db_rel}
BuildRequires: autoconf
@@ -218,6 +219,7 @@ Moduły języka Python dla poldka.
%patch1 -p1
%patch2 -p1
%patch3 -p1
+%patch4 -p1
%{__rm} m4/libtool.m4 m4/lt*.m4
diff --git a/poldek-ignore-too-long-paths.patch b/poldek-ignore-too-long-paths.patch
new file mode 100644
index 0000000..9c25d54
--- /dev/null
+++ b/poldek-ignore-too-long-paths.patch
@@ -0,0 +1,63 @@
+commit 31658355f3937b67f265e45f70eccfe7af668a70
+Author: Marcin Banasiak <marcin.banasiak at gmail.com>
+Date: Sun Mar 9 22:16:00 2014 +0100
+
+ Ignore paths longer than 255 characters (lp#1288989)
+
+ Index format used by poldek prevents us from storing paths longer than
+ 255 characters. Changing this behaviour would break backward
+ compatibility, so simply ignore them.
+
+diff --git a/pkgdir/pkgdir_dirindex.c b/pkgdir/pkgdir_dirindex.c
+index abfd05c..3437ee7 100644
+--- a/pkgdir/pkgdir_dirindex.c
++++ b/pkgdir/pkgdir_dirindex.c
+@@ -136,6 +136,9 @@ void add_to_path_index(tn_hash *path_index, const char *path, uint32_t package_n
+ unsigned khash = 0;
+ tn_array *keys;
+
++ if (strlen(path) > 255)
++ return;
++
+ if ((keys = n_hash_get_ex(path_index, path, &klen, &khash)) == NULL) {
+ keys = n_array_new(16, free, (tn_fn_cmp)strcmp);
+ n_hash_insert_ex(path_index, path, klen, khash, keys);
+diff --git a/pm/rpm/rpm_pkg_ld.c b/pm/rpm/rpm_pkg_ld.c
+index 5ae167a..3983693 100644
+--- a/pm/rpm/rpm_pkg_ld.c
++++ b/pm/rpm/rpm_pkg_ld.c
+@@ -259,8 +259,9 @@ static int valid_fname(const char *fname, mode_t mode, const char *pkgname)
+ #endif
+
+ if (strlen(fname) > 255) {
+- logn(LOGERR, _("%s: %s \"%s\" longer than 255 bytes"),
+- pkgname, S_ISDIR(mode) ? _("dirname") : _("filename"), fname);
++ if (poldek_VERBOSE > 1)
++ logn(LOGWARN, _("%s: skipped %s \"%s\" longer than 255 bytes"),
++ pkgname, S_ISDIR(mode) ? _("dirname") : _("filename"), fname);
+ return 0;
+ }
+
+@@ -335,8 +336,11 @@ int pm_rpm_ldhdr_fl(tn_alloc *na, tn_tuple **fl,
+ struct pkgfl_ent *flent;
+
+ fentdirs_items[i] = 0;
+- if (!valid_fname(dirs[i], 0, pkgname))
+- nerr++;
++ if (!valid_fname(dirs[i], 0, pkgname)) {
++ skipdirs[i] = NULL;
++ fentdirs[i] = NULL;
++ continue;
++ }
+
+ if (which != PKGFL_ALL) {
+ int is_depdir;
+@@ -374,7 +378,7 @@ int pm_rpm_ldhdr_fl(tn_alloc *na, tn_tuple **fl,
+ int len;
+
+ if (!valid_fname(names[i], modes ? modes[i] : 0, pkgname))
+- nerr++;
++ continue;
+
+ msg(5, " %d: %s %s/%s \n", i, skipdirs[j] ? "add " : "skip",
+ dirs[j], names[i]);
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/poldek.git/commitdiff/5d6ede248c1e05b26a4938d4f13665b187605e0f
More information about the pld-cvs-commit
mailing list