diff options
Diffstat (limited to 'lib/File')
-rw-r--r-- | lib/File/Spec/Unix.pm | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/File/Spec/Unix.pm b/lib/File/Spec/Unix.pm index fcbe76765b..32ace3bff4 100644 --- a/lib/File/Spec/Unix.pm +++ b/lib/File/Spec/Unix.pm @@ -3,7 +3,7 @@ package File::Spec::Unix; use strict; our($VERSION); -$VERSION = '1.3'; +$VERSION = '1.4'; use Cwd; @@ -124,12 +124,20 @@ from the following list or "" if none are writable: $ENV{TMPDIR} /tmp +Since perl 5.8.0, if running under taint mode, and if $ENV{TMPDIR} +is tainted, it is not used. + =cut my $tmpdir; sub tmpdir { return $tmpdir if defined $tmpdir; - foreach ($ENV{TMPDIR}, "/tmp") { + my @dirlist = ($ENV{TMPDIR}, "/tmp"); + if (${"\cTAINT"}) { # Check for taint mode on perl >= 5.8.0 + require Scalar::Util; + shift @dirlist if Scalar::Util::tainted($ENV{TMPDIR}); + } + foreach (@dirlist) { next unless defined && -d && -w _; $tmpdir = $_; last; |