test wrapper for Safe
This commit is contained in:
parent
09b06fecbf
commit
29640f3829
@ -21,6 +21,7 @@ use Safe;
|
||||
use Lemonldap::NG::Common::Safelib; #link protected safe Safe object
|
||||
require POSIX;
|
||||
use CGI::Util 'expires';
|
||||
use constant SAFEWRAP => ( Safe->can("wrap_code_re") ? 1 : 0 );
|
||||
|
||||
#inherits Cache::Cache
|
||||
#inherits Apache::Session
|
||||
@ -373,7 +374,7 @@ sub safe {
|
||||
}";
|
||||
$class->lmLog( $@, 'error' ) if ($@);
|
||||
}
|
||||
$safe->share_from( 'main', ['%ENV', 'APR::Table::set'] );
|
||||
$safe->share_from( 'main', [ '%ENV', 'APR::Table::set' ] );
|
||||
$safe->share_from( 'Lemonldap::NG::Common::Safelib',
|
||||
$Lemonldap::NG::Common::Safelib::functions );
|
||||
$safe->share( '&encode_base64', '$datas', '&lmSetHeaderIn',
|
||||
@ -609,9 +610,13 @@ sub conditionSub {
|
||||
$cond =~ s/\$datas->{vhost}/\$apacheRequest->hostname/g;
|
||||
|
||||
# Eval sub
|
||||
my $sub =
|
||||
$class->safe->wrap_code_ref(
|
||||
$class->safe->reval("sub {return ( $cond )}") );
|
||||
my $sub = (
|
||||
SAFEWRAP
|
||||
? $class->safe->wrap_code_ref(
|
||||
$class->safe->reval("sub{return($cond)}")
|
||||
)
|
||||
: $class->safe->reval("sub{return($cond)}")
|
||||
);
|
||||
|
||||
# Return sub and protected flag
|
||||
return ( $sub, 1 );
|
||||
@ -695,8 +700,11 @@ sub forgeHeadersInit {
|
||||
"lmSetHeaderIn(\$apacheRequest,'$_' => join('',split(/[\\r\\n]+/,"
|
||||
. $tmp{$_} . ")));";
|
||||
}
|
||||
$forgeHeaders =
|
||||
$class->safe->wrap_code_ref( $class->safe->reval("sub {$sub};") );
|
||||
$forgeHeaders = (
|
||||
SAFEWRAP
|
||||
? $class->safe->wrap_code_ref( $class->safe->reval("sub{$sub}") )
|
||||
: $class->safe->reval("sub{$sub}")
|
||||
);
|
||||
$class->lmLog( "$class: Unable to forge headers: $@: sub {$sub}", 'error' )
|
||||
if ($@);
|
||||
1;
|
||||
@ -737,9 +745,7 @@ sub postUrlInit {
|
||||
$h{$_} = "'$h{$_}'" if ( $h{$_} =~ /^\w+$/ );
|
||||
$tmp .= "'$_'=>$h{$_},";
|
||||
}
|
||||
my $sub = $class->safe->wrap_code_ref(
|
||||
$class->safe->reval(
|
||||
"sub{
|
||||
my $sub = "sub{
|
||||
my \$f = shift;
|
||||
my \$l;
|
||||
unless(\$f->ctx){
|
||||
@ -756,7 +762,11 @@ sub postUrlInit {
|
||||
}
|
||||
return OK;
|
||||
}"
|
||||
)
|
||||
;
|
||||
$sub = (
|
||||
SAFEWRAP
|
||||
? $class->safe->wrap_code_ref( $class->safe->reval($sub) )
|
||||
: $class->safe->reval($sub)
|
||||
);
|
||||
$class->lmLog( "Compiling POST request for $url", 'debug' );
|
||||
$transform->{$url} = sub {
|
||||
|
@ -8,6 +8,7 @@ package Lemonldap::NG::Handler::Vhost;
|
||||
use Lemonldap::NG::Handler::Simple qw(:locationRules :headers); #inherits
|
||||
use strict;
|
||||
use MIME::Base64;
|
||||
use constant SAFEWRAP => ( Safe->can("wrap_code_re") ? 1 : 0 );
|
||||
|
||||
our $VERSION = '0.55';
|
||||
|
||||
@ -78,8 +79,11 @@ sub forgeHeadersInit {
|
||||
|
||||
#$sub = "\$forgeHeaders->{'$vhost'} = sub {$sub};";
|
||||
#eval "$sub";
|
||||
$forgeHeaders->{$vhost} =
|
||||
$class->safe->wrap_code_ref( $class->safe->reval("sub {$sub}") );
|
||||
$forgeHeaders->{$vhost} = (
|
||||
SAFEWRAP
|
||||
? $class->safe->wrap_code_ref( $class->safe->reval("sub {$sub}") )
|
||||
: $class->safe->reval("sub {$sub}")
|
||||
);
|
||||
$class->lmLog( "$class: Unable to forge headers: $@: sub {$sub}",
|
||||
'error' )
|
||||
if ($@);
|
||||
|
@ -11,6 +11,7 @@ require Lemonldap::NG::Common::CGI;
|
||||
use Lemonldap::NG::Portal::SharedConf;
|
||||
use Lemonldap::NG::Common::Safelib; #link protected safe Safe object
|
||||
use Safe;
|
||||
use constant SAFEWRAP => ( Safe->can("wrap_code_re") ? 1 : 0 );
|
||||
|
||||
#inherits Net::LDAP::Control::PasswordPolicy
|
||||
|
||||
@ -151,9 +152,13 @@ sub displayModule {
|
||||
# Else parse display condition
|
||||
my $cond = $self->{modules}->{$modulename};
|
||||
$cond =~ s/\$(\w+)/$self->{portalObject}->{sessionInfo}->{$1}/g;
|
||||
return $self->safe->wrap_code_ref(
|
||||
$self->_safe->reval("sub {return ( $cond )}") );
|
||||
return 0;
|
||||
return (
|
||||
SAFEWRAP
|
||||
? $self->safe->wrap_code_ref(
|
||||
$self->safe->reval("sub{return($cond)}")
|
||||
)
|
||||
: $self->safe->reval("sub{return($cond)}")
|
||||
);
|
||||
}
|
||||
|
||||
## @method string displayTab()
|
||||
@ -565,10 +570,12 @@ sub _conditionSub {
|
||||
if ( $cond =~ /^(?:deny$|logout)/i );
|
||||
$cond =~ s/\$date/&POSIX::strftime("%Y%m%d%H%M%S",localtime())/e;
|
||||
$cond =~ s/\$(\w+)/\$self->{portalObject}->{sessionInfo}->{$1}/g;
|
||||
my $sub;
|
||||
$sub =
|
||||
$self->safe->wrap_code_ref(
|
||||
$self->_safe->reval("sub {my \$self = shift; return ( $cond )}") );
|
||||
my $sub = "sub {my \$self = shift; return ( $cond )}";
|
||||
$sub = (
|
||||
SAFEWRAP
|
||||
? $self->safe->wrap_code_ref( $self->safe->reval($sub) )
|
||||
: $self->safe->reval($sub)
|
||||
);
|
||||
return $sub;
|
||||
}
|
||||
|
||||
|
@ -8,6 +8,8 @@ package Lemonldap::NG::Portal::_SOAP;
|
||||
use strict;
|
||||
use Lemonldap::NG::Portal::Simple;
|
||||
require SOAP::Lite;
|
||||
use Safe;
|
||||
use constant SAFEWRAP => ( Safe->can("wrap_code_re") ? 1 : 0 );
|
||||
|
||||
our $VERSION = '0.2';
|
||||
|
||||
@ -367,10 +369,12 @@ sub _conditionSub {
|
||||
if ( !$h or $cond =~ /^(?:deny$|logout)/i );
|
||||
$cond =~ s/\$date/&POSIX::strftime("%Y%m%d%H%M%S",localtime())/e;
|
||||
$cond =~ s/\$(\w+)/$h->{$1}/g;
|
||||
my $sub;
|
||||
$sub =
|
||||
$self->safe->wrap_code_ref(
|
||||
$self->safe->reval("sub {my \$self = shift; return ( $cond )}") );
|
||||
my $sub = "sub {my \$self = shift; return ( $cond )}";
|
||||
$sub = (
|
||||
SAFEWRAP
|
||||
? $self->safe->wrap_code_ref( $self->safe->reval($sub) )
|
||||
: $self->safe->reval($sub)
|
||||
);
|
||||
return $sub;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user