Explorar el Código

dpkg: Fix --verify with --root

The code was not taking into account the root prefix when verifying
pathnames, which resulted in all files failing to verify.
Guillem Jover hace 11 años
padre
commit
64acb4e4b9
Se han modificado 2 ficheros con 8 adiciones y 1 borrados
  1. 1 0
      debian/changelog
  2. 7 1
      src/verify.c

+ 1 - 0
debian/changelog

@@ -12,6 +12,7 @@ dpkg (1.18.3) UNRELEASED; urgency=low
     command instead of executing itself with --set or --auto per subtask.
   * Add kfreebsd-armhf support to ostable and triplettable. Closes: #796283
     Thanks to Steven Chamberlain <steven@pyro.eu.org>.
+  * Fix «dpkg --verify» with --root.
   * Perl modules:
     - Only warn on invalid week days instead of aborting in
       Dpkg::Changelog::Entry::Debian. Regression introduced in dpkg 1.18.2.

+ 7 - 1
src/verify.c

@@ -96,6 +96,7 @@ static void
 verify_package(struct pkginfo *pkg)
 {
 	struct fileinlist *file;
+	struct varbuf filename = VARBUF_INIT;
 
 	ensure_packagefiles_available(pkg);
 	parse_filehash(pkg, &pkg->installed);
@@ -116,9 +117,14 @@ verify_package(struct pkginfo *pkg)
 				fnn->newhash = fnn->oldhash;
 		}
 
+		varbuf_reset(&filename);
+		varbuf_add_str(&filename, instdir);
+		varbuf_add_str(&filename, fnn->name);
+		varbuf_end_str(&filename);
+
 		memset(&checks, 0, sizeof(checks));
 
-		md5hash(pkg, hash, fnn->name);
+		md5hash(pkg, hash, filename.buf);
 		if (strcmp(hash, fnn->newhash) != 0) {
 			checks.md5sum = VERIFY_FAIL;
 			failures++;