소스 검색

dpkg: Activate all path components for file triggers on removal

Because directory processing might get skipped on removal (contrary to
unpack), as they might be shared with other packages, some file triggers
will not get activated as the code was changed to do more optimal
activation. The problem is that the removed paths need to activate all
parent paths to be effective.

Regression introduced in commit 65ade6390b47fe3ec6a0e2ba341f3d553bf4bbc6.

Closes: #725437
Guillem Jover 13 년 전
부모
커밋
e00a290311
2개의 변경된 파일4개의 추가작업 그리고 2개의 파일을 삭제
  1. 2 0
      debian/changelog
  2. 2 2
      src/remove.c

+ 2 - 0
debian/changelog

@@ -33,6 +33,8 @@ dpkg (1.17.2) UNRELEASED; urgency=low
   * Do not capitalize error and warning messages.
   * When ignoring invalid remove requests in dpkg consider that progress,
     reset the loop detector and avoid the assert. Closes: #143307
+  * Activate all path components for file triggers on removal.
+    Regression introduced in 1.17.0. Closes: #725437
 
   [ Updated programs translations ]
   * German (Sven Joachim).

+ 2 - 2
src/remove.c

@@ -304,7 +304,7 @@ removal_bulk_remove_files(struct pkginfo *pkg)
           continue;
       }
 
-      trig_file_activate(usenode, pkg);
+      trig_path_activate(usenode, pkg);
 
       varbuf_trunc(&fnvb, before);
       varbuf_add_str(&fnvb, DPKGTEMPEXT);
@@ -412,7 +412,7 @@ static void removal_bulk_remove_leftover_dirs(struct pkginfo *pkg) {
         continue;
     }
 
-    trig_file_activate(usenode, pkg);
+    trig_path_activate(usenode, pkg);
 
     debug(dbg_eachfiledetail, "removal_bulk removing '%s'", fnvb.buf);
     if (!rmdir(fnvb.buf) || errno == ENOENT || errno == ELOOP) continue;