fix system breakage window during make install due to permissions
authorRich Felker <dalias@aerifal.cx>
Thu, 16 Jan 2014 03:29:13 +0000 (22:29 -0500)
committerRich Felker <dalias@aerifal.cx>
Thu, 16 Jan 2014 03:29:13 +0000 (22:29 -0500)
install.sh was wrongly waiting until after atomically replacing the
old file to set the correct permissions on the new file. in the case
of the dynamic linker, this would cause a dynamic-linked chmod command
not to run (due to missing executable permissions on the dynamic
linker) and thus leave the system in an unusable state.

even if chmod is static-linked, the old behavior had a race window
where dynamic-linked programs could fail to run.

tools/install.sh

index 4e5a8b9..d913b60 100755 (executable)
@@ -51,6 +51,7 @@ if test "$symlink" ; then
 ln -s "$1" "$tmp"
 else
 cat < "$1" > "$tmp"
+chmod "$mode" "$tmp"
 fi
 
 mv -f "$tmp" "$2"
@@ -60,6 +61,4 @@ printf "%s: %s is a directory\n" "$0" "$dst" 1>&2
 exit 1
 }
 
-test "$symlink" || chmod "$mode" "$2"
-
 exit 0