Преглед изворни кода

dpkg-divert: Fail when diverting to a non existent directory

Closes: #245562
Flavio Stanchina пре 18 година
родитељ
комит
84e1f3e96f
3 измењених фајлова са 21 додато и 9 уклоњено
  1. 5 0
      ChangeLog
  2. 2 0
      debian/changelog
  3. 14 9
      scripts/dpkg-divert.pl

+ 5 - 0
ChangeLog

@@ -1,3 +1,8 @@
+2007-12-27  Flavio Stanchina  <flavio@stanchina.net>
+
+	* scripts/dpkg-divert.pl (checkrename): Do not ignore ENOENT for
+	destination.
+
 2007-12-27  Daniel Leidert  <daniel.leidert@wgdd.de>
             Guillem Jover  <guillem@debian.org>
 

+ 2 - 0
debian/changelog

@@ -45,6 +45,8 @@ dpkg (1.14.13) UNRELEASED; urgency=low
     Closes: #76295, #246906, #433567, #451872, #220044, #392440, #441021
     Closes: #443241
     Based on a patch by Daniel Leidert <daniel.leidert@wgdd.de>.
+  * Fail when diverting to a non existent directory. Closes: #245562
+    Thanks to Flavio Stanchina <flavio@stanchina.net>.
 
   [ Updated dpkg translations ]
   * Swedish (Peter Karlsson)

+ 14 - 9
scripts/dpkg-divert.pl

@@ -237,15 +237,20 @@ sub checkrename {
     # same name as the diversions but with an extension that
     # (hopefully) wont overwrite anything. If it succeeds, we
     # assume a writable filesystem.
-    foreach my $file ($rsrc, $rdest) {
-	if (open (TMP, ">> ${file}.dpkg-devert.tmp")) {
-		close TMP;
-		unlink ("${file}.dpkg-devert.tmp");
-	} elsif ($! == ENOENT) {
-		$dorename = !$dorename;
-	} else {
-		&quit(sprintf(_g("error checking \`%s': %s"), $file, $!));
-	}
+    if (open (TMP, ">>", "${rsrc}.dpkg-devert.tmp")) {
+	close TMP;
+	unlink ("${rsrc}.dpkg-devert.tmp");
+    } elsif ($! == ENOENT) {
+	$dorename = !$dorename;
+    } else {
+	quit(sprintf(_g("error checking \`%s': %s"), $rsrc, $!));
+    }
+
+    if (open (TMP, ">>", "${rdest}.dpkg-devert.tmp")) {
+	close TMP;
+	unlink ("${rdest}.dpkg-devert.tmp");
+    } else {
+	quit(sprintf(_g("error checking \`%s': %s"), $rdest, $!));
     }
     if (@ssrc && @sdest &&
         !($ssrc[0] == $sdest[0] && $ssrc[1] == $sdest[1])) {