summaryrefslogtreecommitdiff
path: root/cpan/dist/PathTools/t/taint.t
diff options
context:
space:
mode:
authorfukachan <fukachan>2018-01-13 08:48:42 +0000
committerfukachan <fukachan>2018-01-13 08:48:42 +0000
commit28a388f6aeced7f8dd585a84bde0f0ddf0bb7a69 (patch)
tree7fbe3b9fc9209113e15e00fbdf9663ff1f16190d /cpan/dist/PathTools/t/taint.t
parentdbab3c94592a2f0ef40175cf39cf89fbe5503c41 (diff)
downloadfml8-PathTools-3-62.tar.gz
fml8-PathTools-3-62.tar.bz2
fml8-PathTools-3-62.zip
import PathTools-3.62PathTools-3-62
Diffstat (limited to 'cpan/dist/PathTools/t/taint.t')
-rw-r--r--cpan/dist/PathTools/t/taint.t53
1 files changed, 53 insertions, 0 deletions
diff --git a/cpan/dist/PathTools/t/taint.t b/cpan/dist/PathTools/t/taint.t
new file mode 100644
index 00000000..48f8c5bc
--- /dev/null
+++ b/cpan/dist/PathTools/t/taint.t
@@ -0,0 +1,53 @@
+#!./perl -Tw
+# Testing Cwd under taint mode.
+
+use strict;
+
+use Cwd;
+chdir 't' unless $ENV{PERL_CORE};
+
+use File::Spec;
+use lib File::Spec->catdir('t', 'lib');
+use Test::More;
+BEGIN {
+ plan(
+ ${^TAINT}
+ ? (tests => 21)
+ : (skip_all => "A perl without taint support")
+ );
+}
+
+use Scalar::Util qw/tainted/;
+
+my @Functions = qw(getcwd cwd fastcwd fastgetcwd
+ abs_path fast_abs_path
+ realpath fast_realpath
+ );
+
+foreach my $func (@Functions) {
+ no strict 'refs';
+ my $cwd;
+ eval { $cwd = &{'Cwd::'.$func} };
+ is( $@, '', "$func() should not explode under taint mode" );
+ ok( tainted($cwd), "its return value should be tainted" );
+}
+
+# Previous versions of Cwd tainted $^O
+is !tainted($^O), 1, "\$^O should not be tainted";
+
+{
+ # [perl #126862] canonpath() loses taint
+ my $tainted = substr($ENV{PATH}, 0, 0);
+ # yes, getcwd()'s result should be tainted, and is tested above
+ # but be sure
+ ok tainted(File::Spec->canonpath($tainted . Cwd::getcwd)),
+ "canonpath() keeps taint on non-empty string";
+ ok tainted(File::Spec->canonpath($tainted)),
+ "canonpath() keeps taint on empty string";
+
+ (Cwd::getcwd() =~ /^(.*)/);
+ my $untainted = $1;
+ ok !tainted($untainted), "make sure our untainted value is untainted";
+ ok !tainted(File::Spec->canonpath($untainted)),
+ "canonpath() doesn't add taint to untainted string";
+}