📄 safe3.t
字号:
#!perlBEGIN { if ($ENV{PERL_CORE}) { chdir 't' if -d 't'; @INC = '../lib'; } require Config; import Config; if ($Config{'extensions'} !~ /\bOpcode\b/ && $Config{'extensions'} !~ /\bPOSIX\b/ && $Config{'osname'} ne 'VMS') { print "1..0\n"; exit 0; }}use strict;use warnings;use POSIX qw(ceil);use Test::More tests => 2;use Safe;my $safe = new Safe;$safe->deny('add');my $masksize = ceil( Opcode::opcodes / 8 );# Attempt to change the opmask from within the safe compartment$safe->reval( qq{\$_[1] = qq/\0/ x } . $masksize );# Check that it didn't work$safe->reval( q{$x + $y} );like( $@, qr/^'?addition \(\+\)'? trapped by operation mask/, 'opmask still in place with reval' );my $safe2 = new Safe;$safe2->deny('add');open my $fh, '>nasty.pl' or die "Can't write nasty.pl: $!\n";print $fh <<EOF;\$_[1] = "\0" x $masksize;EOFclose $fh;$safe2->rdo('nasty.pl');$safe2->reval( q{$x + $y} );like( $@, qr/^'?addition \(\+\)'? trapped by operation mask/, 'opmask still in place with rdo' );END { unlink 'nasty.pl' }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -