summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillem Jover <guillem@debian.org>2013-06-10 01:09:49 +0200
committerGuillem Jover <guillem@debian.org>2013-06-21 20:29:12 +0200
commit71d6e1b6c16df782dbe2736a285e7bd9040becd4 (patch)
tree4a6e68325d19a6248792b946324500e06007c84b
parent1d90dd12ef938b14c8388329a8b0c7ab31595f31 (diff)
downloaddpkg-71d6e1b6c16df782dbe2736a285e7bd9040becd4.tar.gz
libdpkg: Only ignore older packages if the existing version is informative
When ignoring older packages (either by explicit request, or when parsing available files), we should not ignore them when the existing version is empty, because then we would consider that the empty version (equivalent to "0-0") is newer than "0~0-0" for example. This affects any program using libdpkg to parse the available file. Regression introduced in commit 86823d5792af8328107c3d86e486d2cf373da128. Closes: #676664
-rw-r--r--debian/changelog3
-rw-r--r--lib/dpkg/parse.c1
2 files changed, 4 insertions, 0 deletions
diff --git a/debian/changelog b/debian/changelog
index 60f4c3a1e..78d11178a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -79,6 +79,9 @@ dpkg (1.17.0) UNRELEASED; urgency=low
* Remove update-alternatives, dpkg-divert and dpkg-statoverride
compatibility symlinks under /usr/sbin/.
* Remove install-info wrapper.
+ * Only ignore older packages if the existing version is informative. This
+ allows any program using libdpkg to parse the available file to see again
+ packages with versions lesser than 0-0 (like 0~0-0). Closes: #676664
[ Updated manpages translations ]
* Fix incorrect translation of "fortify" in French manpage for dpkg-buildflags
diff --git a/lib/dpkg/parse.c b/lib/dpkg/parse.c
index 71076de27..b51ca1b3d 100644
--- a/lib/dpkg/parse.c
+++ b/lib/dpkg/parse.c
@@ -742,6 +742,7 @@ int parsedb(const char *filename, enum parsedbflags flags,
db_pkgbin = &db_pkg->installed;
if (((flags & pdb_ignoreolder) || ps.type == pdb_file_available) &&
+ dpkg_version_is_informative(&db_pkgbin->version) &&
dpkg_version_compare(&new_pkgbin->version, &db_pkgbin->version) < 0)
continue;