Re: [DOC PATCH] Re: [ID 20020613.003] context incorrectly reported
[p5sagit/p5-mst-13.2.git] / ext / POSIX / t / taint.t
CommitLineData
0e247040 1#!./perl -Tw
2
3BEGIN {
4 chdir 't' if -d 't';
5 @INC = '../lib';
6 require Config; import Config;
7 if ($^O ne 'VMS' and $Config{'extensions'} !~ /\bPOSIX\b/) {
8 print "1..0\n";
9 exit 0;
10 }
11}
12
13require "./test.pl";
14use Scalar::Util qw/tainted/;
15plan(tests => 5);
16
17
18use POSIX qw(fcntl_h open read mkfifo);
19use strict ;
20
21$| = 1;
22
23my $buffer;
24my @buffer;
25my $testfd;
26
27# Sources of taint:
28# The empty tainted value, for tainting strings
29
30my $TAINT = substr($^X, 0, 0);
31
32eval { mkfifo($TAINT. "TEST", 0) };
33ok($@ =~ /^Insecure dependency/, 'mkfifo with tainted data');
34
35eval { $testfd = open($TAINT. "TEST", O_WRONLY, 0) };
36ok($@ =~ /^Insecure dependency/, 'open with tainted data');
37
38eval { $testfd = open("TEST", O_RDONLY, 0) };
39ok($@ eq "", 'open with untainted data');
40
41read($testfd, $buffer, 2) if $testfd > 2;
42is( $buffer, "#!", ' read' );
43ok(tainted($buffer), ' scalar tainted');
44read($testfd, $buffer[1], 2) if $testfd > 2;
45
46#is( $buffer[1], "./", ' read' );
47#ok(tainted($buffer[1]), ' array element tainted');