/Compress/ modules are at version 2.021. Remove vestigal MAPs and comments.
[p5sagit/p5-mst-13.2.git] / ext / POSIX / t / taint.t
CommitLineData
0e247040 1#!./perl -Tw
2
3BEGIN {
0e247040 4 require Config; import Config;
5 if ($^O ne 'VMS' and $Config{'extensions'} !~ /\bPOSIX\b/) {
6 print "1..0\n";
7 exit 0;
8 }
9}
10
64087619 11use Test::More tests => 7;
0e247040 12use Scalar::Util qw/tainted/;
0e247040 13
14
15use POSIX qw(fcntl_h open read mkfifo);
16use strict ;
17
18$| = 1;
19
20my $buffer;
21my @buffer;
22my $testfd;
23
24# Sources of taint:
25# The empty tainted value, for tainting strings
26
27my $TAINT = substr($^X, 0, 0);
28
2adbc9b6 29my $file = 'POSIX.xs';
943b127a 30
31eval { mkfifo($TAINT. $file, 0) };
64087619 32like($@, qr/^Insecure dependency/, 'mkfifo with tainted data');
0e247040 33
943b127a 34eval { $testfd = open($TAINT. $file, O_WRONLY, 0) };
64087619 35like($@, qr/^Insecure dependency/, 'open with tainted data');
0e247040 36
943b127a 37eval { $testfd = open($file, O_RDONLY, 0) };
64087619 38is($@, "", 'open with untainted data');
0e247040 39
40read($testfd, $buffer, 2) if $testfd > 2;
2adbc9b6 41is( $buffer, "#d", ' read' );
0e247040 42ok(tainted($buffer), ' scalar tainted');
0e247040 43
64087619 44TODO: {
45 local $TODO = "POSIX::read won't taint an array element";
46
47 read($testfd, $buffer[1], 2) if $testfd > 2;
48
49 is( $buffer[1], "./", ' read' );
50 ok(tainted($buffer[1]), ' array element tainted');
51}