This is an automated email from the git hooks/post-receive script.

guillem pushed a commit to branch master
in repository dpkg.

commit 9507afd811a3d73822dc6a6b110bd602b82aad0b
Author: Guillem Jover <guil...@debian.org>
Date:   Wed Apr 26 19:11:10 2017 +0200

    dpkg: Fix digest inference for shared conffiles
    
    The code in charge of inferring the digest for a conffile was
    checking the owning package status twice, and ignoring conffiles
    with a status lower than "unpacked" even if they had been configured
    previously and their md5sums were valid.
    
    This was causing bogus takeover unpack errors.
    
    Fixes: commit 05a8ddb482419d110571679a29bcd25e3c2b036d
    Closes: #861217
    Stable-Candidate: 1.17.x
---
 debian/changelog | 2 ++
 src/archives.c   | 6 +-----
 2 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 4a5193e..53c4694 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -16,6 +16,8 @@ dpkg (1.18.24) UNRELEASED; urgency=medium
     similar to what dpkg-gencontrol is doing for .deb files.
   * Fix conffile takeover handling during unpack in dpkg on --root or
     on diversions. Closes: #837051, #858004
+  * Fix digest inference for shared conffiles, causing bogus takeover
+    unpack errors. Regression introduced in dpkg 1.16.9. Closes: #861217
   * Architecture support:
     - Add support for ARM64 ILP32. Closes: #824742
       Thanks to Wookey <woo...@wookware.org>.
diff --git a/src/archives.c b/src/archives.c
index b3a678d..b82ee4f 100644
--- a/src/archives.c
+++ b/src/archives.c
@@ -228,14 +228,10 @@ md5hash_prev_conffile(struct pkginfo *pkg, char *oldhash, 
const char *oldname,
   for (otherpkg = &pkg->set->pkg; otherpkg; otherpkg = otherpkg->arch_next) {
     if (otherpkg == pkg)
       continue;
-    /* The hash in the Conffiles is only meaningful if the package
-     * configuration has been at least tried. */
-    if (otherpkg->status < PKG_STAT_UNPACKED)
-      continue;
     /* If we are reinstalling, even if the other package is only unpacked,
      * we can always make use of the Conffiles hash value from an initial
      * installation, if that happened at all. */
-    if (otherpkg->status == PKG_STAT_UNPACKED &&
+    if (otherpkg->status <= PKG_STAT_UNPACKED &&
         dpkg_version_compare(&otherpkg->installed.version,
                              &otherpkg->configversion) != 0)
       continue;

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/dpkg/dpkg.git

Reply via email to