#!/usr/local/bin/perl -Tw
sub is_tainted {
no warnings;
no strict;
return ! eval { join('',@_), kill 0; 1; };
}
####
use strict;
my $site = <>;
chomp $site;
print is_tainted($site) ? "Tainted\n" : "Not tainted\n";
$site =~ s/[^-\@\w\/]//;
print is_tainted($site) ? "Tainted\n" : "Not tainted\n";
my $dir = "$sites_root/$site";
print is_tainted($dir) ? "Tainted\n" : "Not tainted\n";
chdir($dir)
__END__
Tainted
Tainted
Tainted
Insecure dependency in chdir while running with -T switch at ./foo.pl line 21, <> line 1.
####
my $validchars = 'A-Za-z0-9_.-';
if ( $site =~ /^([$validchars]+)$/o ) {
$site = $1;
}else{
warn "Invalid site: $site\n";
next;
}
####
2;0 juerd@ouranos:~$ perl -e'undef christmas'
Segmentation fault
2;139 juerd@ouranos:~$