Cross Reference: safeuniversal.t
xref
: /
osnet-11
/
usr
/
src
/
cmd
/
perl
/
5.8.4
/
distrib
/
ext
/
Safe
/
t
/
safeuniversal.t
Home
History
Annotate
Line#
Navigate
Download
Search
only in
./
1
N/A
#!perl
1
N/A
1
N/A
BEGIN
{
1
N/A
require
Config
;
1
N/A
import
Config
;
1
N/A
if
(
$Config
{
'extensions'
} !~ /\
bOpcode
\b/)
{
1
N/A
print
"1..0\n"
;
1
N/A
exit
0
;
1
N/A
}
1
N/A
}
1
N/A
1
N/A
use
strict
;
1
N/A
use
warnings
;
1
N/A
use
Test
::
More
;
1
N/A
use
Safe
;
1
N/A
plan
(
tests
=>
6
)
;
1
N/A
1
N/A
my
$c =
new
Safe
;
1
N/A
$c->
permit
(
qw
(
require
caller
)
)
;
1
N/A
1
N/A
my
$no_warn_redef
=
($] !=
5.008009
)
1
N/A
? q
(
no
warnings
'redefine'
;)
1
N/A
: q
(
$SIG
{
__WARN__
}=
sub
{};)
;
1
N/A
my
$r = $c->
reval
(
$no_warn_redef
. q!
1
N/A
sub
UNIVERSAL
::
isa
{
"pwned"
}
1
N/A
(
bless
[],
"Foo"
)
->
isa
(
"Foo"
)
;
1
N/A
!);
1
N/A
1
N/A
is
( $r,
"pwned"
,
"isa overriden in compartment"
)
;
1
N/A
is
(
(
bless
[],
"Foo"
)
->
isa
(
"Foo"
)
,
1
,
"... but not outside"
)
;
1
N/A
1
N/A
sub
Foo
::
foo
{}
1
N/A
1
N/A
$r = $c->
reval
(
$no_warn_redef
. q!
1
N/A
sub
UNIVERSAL
::
can
{
"pwned"
}
1
N/A
(
bless
[],
"Foo"
)
->
can
(
"foo"
)
;
1
N/A
!);
1
N/A
1
N/A
is
( $r,
"pwned"
,
"can overriden in compartment"
)
;
1
N/A
is
(
(
bless
[],
"Foo"
)
->
can
(
"foo"
)
, \&
Foo
::
foo
,
"... but not outside"
)
;
1
N/A
1
N/A
$r = $c->
reval
(q!
1
N/A
utf8
::
is_utf8
(
"\x{100}"
)
;
1
N/A
!)
;
1
N/A
is
( $@,
''
,
'can call utf8::is_valid'
)
;
1
N/A
is
( $r,
1
,
'... returns 1'
)
;