1#!perl -T 2 3BEGIN { 4 my $fail = ''; 5 $fail = "Skipped for perl 5.6.x" if $] < 5.007; 6 $fail = "Skipping for Android (tests fail)" if lc($^O) eq 'android'; 7 if ($fail) { 8 print "1..1\nok 1\n"; 9 warn "$fail\n"; 10 exit(0); 11 } 12} 13 14use warnings; use strict; 15use FindBin '$Bin'; 16my $bin; 17BEGIN { 18 # untaint 19 ($bin) = $Bin =~ m/(.*)/; 20} 21my $t = $bin; 22use lib $bin; 23 24use Test::More tests => 10; 25use Test::Warn; 26use TestInlineSetup; 27use Inline Config => DIRECTORY => $TestInlineSetup::DIR; 28 29# deal with running as root - actually simulate running as setuid program. Avoid on Windows. 30eval { $< = 1 }; # ignore failure 31 32my $w1 = 'Blindly untainting tainted fields in %ENV'; 33my $w2 = 'Blindly untainting Inline configuration file information'; 34my $w3 = 'Blindly untainting tainted fields in Inline object'; 35 36warnings_like {require_taint_1()} [qr/$w1/, qr/$w2/, qr/$w1/, qr/$w3/], 'warn_test 1'; 37warnings_like {require_taint_2()} [qr/$w1/, qr/$w2/, qr/$w1/, qr/$w3/], 'warn_test 2'; 38warnings_like {require_taint_3()} [qr/$w1/, qr/$w2/, qr/$w1/, qr/$w3/, qr/$w1/, qr/$w2/, qr/$w1/, qr/$w3/], 'warn_test 3'; 39 40sub require_taint_1 { 41 require "$t/08taint_1.p"; 42} 43 44sub require_taint_2 { 45 require "$t/08taint_2.p"; 46} 47 48sub require_taint_3 { 49 require "$t/08taint_3.p"; 50} 51