]> git.donarmstrong.com Git - debhelper.git/commitdiff
r320: Fixed a rather esoteric bug: If a file had multiple hard links, and was
authorjoey <joey>
Tue, 30 Nov 1999 08:26:30 +0000 (08:26 +0000)
committerjoey <joey>
Tue, 30 Nov 1999 08:26:30 +0000 (08:26 +0000)
suid, suidregister detected all the hard links as files that need to be
registered. It looped, registering the first link, and then removing its
suid bit. This messed up the registration of the other had links, since
their permissions were now changed, leading to unpredictable results. The
fix is to just not remove suid bits until all files have been registered.

dh_suidregister

index b7b3152fc1842fa0a9837429031fb1d5c4235047..b82bc7d229c2113fd0285b424f75b1777230306e 100755 (executable)
@@ -39,6 +39,7 @@ foreach $PACKAGE (@{$dh{DOPACKAGES}}) {
                $tostrip="/";
        }
 
+       # Register files with suidregister.
        foreach $file (@files) {
                # Strip leading $tostrip from $file.
                $file=~s/^$tostrip//;
@@ -68,7 +69,12 @@ foreach $PACKAGE (@{$dh{DOPACKAGES}}) {
 
                autoscript($PACKAGE,"postinst","postinst-suid",$sedstr);
                autoscript($PACKAGE,"postrm","postrm-suid","$sedstr");
-               
+       }
+
+       # Remove suid bits from files. This is delayed to this point, because
+       # of a situation with hard linked files if it is done earlier.
+       # See changelog for 2.0.77.
+       foreach $file (@files) {
                if ( -e "$TMP/$file") {
                        doit("chmod","a-s","$TMP/$file");
                }