#!/usr/bin/env perl -T
use strict;
use Test::More;
BEGIN {
eval {
require Taint::Util;
Taint::Util->import;
};
plan $@
? (skip_all => "Taint::Util required for taint tests")
: (tests => 8);
}
use re::engine::Plugin (
exec => sub {
my ($re, $str) = @_;
ok(tainted($str) => 'matched string tainted');
my $one = $str;
my $two = $str; untaint($two);
ok(tainted($one));
ok(!tainted($two));
$re->num_captures(
FETCH => sub {
my ($re, $p) = @_;
return $one if $p == 1;
return $two if $p == 2;
},
);
1;
}
);
my $str = "string";
taint($str);
ok(tainted($str));
if ($str =~ /pattern/) {
cmp_ok $1, 'eq', $str;
ok(tainted($1) => '$1 is tainted');
cmp_ok $2, 'eq', $str;
ok(!tainted($2) => '$2 is untainted');
}