1#!./perl -t 2 3BEGIN { 4 chdir 't' if -d 't'; 5 @INC = '../lib'; 6 require './test.pl'; 7} 8 9plan tests => 13; 10 11my $Perl = which_perl(); 12 13my $warning; 14local $SIG{__WARN__} = sub { $warning = join "\n", @_; }; 15my $Tmsg = 'while running with -t switch'; 16 17is( ${^TAINT}, -1, '${^TAINT} == -1' ); 18 19my $out = `$Perl -le "print q(Hello)"`; 20is( $out, "Hello\n", '`` worked' ); 21like( $warning, qr/^Insecure .* $Tmsg/, ' taint warn' ); 22 23{ 24 no warnings 'taint'; 25 $warning = ''; 26 my $out = `$Perl -le "print q(Hello)"`; 27 is( $out, "Hello\n", '`` worked' ); 28 is( $warning, '', ' no warnings "taint"' ); 29} 30 31# Get ourselves a tainted variable. 32my $filename = tempfile(); 33$file = $0; 34$file =~ s/.*/$filename/; 35ok( open(FILE, ">$file"), 'open >' ) or DIE $!; 36print FILE "Stuff\n"; 37close FILE; 38like( $warning, qr/^Insecure dependency in open $Tmsg/, 'open > taint warn' ); 39ok( -e $file, ' file written' ); 40 41unlink($file); 42like( $warning, qr/^Insecure dependency in unlink $Tmsg/, 43 'unlink() taint warn' ); 44ok( !-e $file, 'unlink worked' ); 45 46ok( !$^W, "-t doesn't enable regular warnings" ); 47 48 49mkdir('ttdir'); 50open(FH,'>','ttdir/ttest.pl')or DIE $!; 51print FH 'return 42'; 52close FH or DIE $!; 53 54SKIP: { 55 ($^O eq 'MSWin32') || skip('skip tainted do test with \ separator'); 56 my $test = 0; 57 $test = do '.\ttdir/ttest.pl'; 58 is($test, 42, 'Could "do" .\ttdir/ttest.pl'); 59} 60{ 61 my $test = 0; 62 $test = do './ttdir/ttest.pl'; 63 is($test, 42, 'Could "do" ./ttdir/ttest.pl'); 64} 65unlink ('./ttdir/ttest.pl'); 66rmdir ('ttdir'); 67