diff options
author | Guillem Jover <guillem@debian.org> | 2013-06-10 01:09:49 +0200 |
---|---|---|
committer | Guillem Jover <guillem@debian.org> | 2013-06-21 20:29:12 +0200 |
commit | 71d6e1b6c16df782dbe2736a285e7bd9040becd4 (patch) | |
tree | 4a6e68325d19a6248792b946324500e06007c84b | |
parent | 1d90dd12ef938b14c8388329a8b0c7ab31595f31 (diff) | |
download | dpkg-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/changelog | 3 | ||||
-rw-r--r-- | lib/dpkg/parse.c | 1 |
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; |