diff options
| author | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2016-02-18 03:44:00 +0100 | 
|---|---|---|
| committer | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2016-02-18 03:44:00 +0100 | 
| commit | 693e0c6abc3bc3b90e9c4d4087184422a7a04725 (patch) | |
| tree | 3d263a473673fab250464f0559e999442b85b32c /install-sh | |
| parent | 18bfa16e1e9af17b6517eaf70a4c74b7143bcb5b (diff) | |
| parent | 59c8c1046c1b17411232821ff892febf42cb82e6 (diff) | |
Merge tag 'upstream/3.19.90'
Upstream version 3.19.90
Diffstat (limited to 'install-sh')
| -rwxr-xr-x | install-sh | 23 | 
1 files changed, 15 insertions, 8 deletions
| @@ -1,7 +1,7 @@  #!/bin/sh  # install - install a program, script, or datafile -scriptversion=2013-12-25.23; # UTC +scriptversion=2014-09-12.12; # UTC  # This originates from X11R5 (mit/util/scripts/install.sh), which was  # later released in X11R6 (xc/config/util/install.sh) with the @@ -324,34 +324,41 @@ do              # is incompatible with FreeBSD 'install' when (umask & 300) != 0.              ;;            *) +            # $RANDOM is not portable (e.g. dash);  use it when possible to +            # lower collision chance              tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ -            trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 +            trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 +            # As "mkdir -p" follows symlinks and we work in /tmp possibly;  so +            # create the $tmpdir first (and fail if unsuccessful) to make sure +            # that nobody tries to guess the $tmpdir name.              if (umask $mkdir_umask && -                exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 +                $mkdirprog $mkdir_mode "$tmpdir" && +                exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1              then                if test -z "$dir_arg" || {                     # Check for POSIX incompatibilities with -m.                     # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or                     # other-writable bit of parent directory when it shouldn't.                     # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. -                   ls_ld_tmpdir=`ls -ld "$tmpdir"` +                   test_tmpdir="$tmpdir/a" +                   ls_ld_tmpdir=`ls -ld "$test_tmpdir"`                     case $ls_ld_tmpdir in                       d????-?r-*) different_mode=700;;                       d????-?--*) different_mode=755;;                       *) false;;                     esac && -                   $mkdirprog -m$different_mode -p -- "$tmpdir" && { -                     ls_ld_tmpdir_1=`ls -ld "$tmpdir"` +                   $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { +                     ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`                       test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"                     }                   }                then posix_mkdir=:                fi -              rmdir "$tmpdir/d" "$tmpdir" +              rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"              else                # Remove any dirs left behind by ancient mkdir implementations. -              rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null +              rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null              fi              trap '' 0;;          esac;; | 
