📄 taint.t
字号:
#!./perl -TwBEGIN { chdir 't' if -d 't'; @INC = '../lib'; require Config; import Config; if ($^O ne 'VMS' and $Config{'extensions'} !~ /\bPOSIX\b/) { print "1..0\n"; exit 0; }}use Test::More tests => 7;use Scalar::Util qw/tainted/;use POSIX qw(fcntl_h open read mkfifo);use strict ;$| = 1;my $buffer;my @buffer;my $testfd;# Sources of taint:# The empty tainted value, for tainting stringsmy $TAINT = substr($^X, 0, 0);my $file = 'TEST';eval { mkfifo($TAINT. $file, 0) };like($@, qr/^Insecure dependency/, 'mkfifo with tainted data');eval { $testfd = open($TAINT. $file, O_WRONLY, 0) };like($@, qr/^Insecure dependency/, 'open with tainted data');eval { $testfd = open($file, O_RDONLY, 0) };is($@, "", 'open with untainted data');read($testfd, $buffer, 2) if $testfd > 2;is( $buffer, "#!", ' read' );ok(tainted($buffer), ' scalar tainted');TODO: { local $TODO = "POSIX::read won't taint an array element"; read($testfd, $buffer[1], 2) if $testfd > 2; is( $buffer[1], "./", ' read' ); ok(tainted($buffer[1]), ' array element tainted');}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -