Try to close LEMONLDAP-117

This commit is contained in:
Xavier Guimard 2010-09-03 15:58:57 +00:00
parent b57ae4f34a
commit d00f68a54b
4 changed files with 20 additions and 9 deletions

View File

@ -373,7 +373,7 @@ sub safe {
}";
$class->lmLog( $@, 'error' ) if ($@);
}
$safe->share_from( 'main', ['%ENV'] );
$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,7 +609,9 @@ sub conditionSub {
$cond =~ s/\$datas->{vhost}/\$apacheRequest->hostname/g;
# Eval sub
my $sub = $class->safe->reval("sub {return ( $cond )}");
my $sub =
$class->safe->wrap_code_ref(
$class->safe->reval("sub {return ( $cond )}") );
# Return sub and protected flag
return ( $sub, 1 );
@ -693,7 +695,8 @@ sub forgeHeadersInit {
"lmSetHeaderIn(\$apacheRequest,'$_' => join('',split(/[\\r\\n]+/,"
. $tmp{$_} . ")));";
}
$forgeHeaders = $class->safe->reval("sub {$sub};");
$forgeHeaders =
$class->safe->wrap_code_ref( $class->safe->reval("sub {$sub};") );
$class->lmLog( "$class: Unable to forge headers: $@: sub {$sub}", 'error' )
if ($@);
1;
@ -734,8 +737,9 @@ sub postUrlInit {
$h{$_} = "'$h{$_}'" if ( $h{$_} =~ /^\w+$/ );
$tmp .= "'$_'=>$h{$_},";
}
my $sub = $class->safe->reval(
"sub{
my $sub = $class->safe->wrap_code_ref(
$class->safe->reval(
"sub{
my \$f = shift;
my \$l;
unless(\$f->ctx){
@ -752,6 +756,7 @@ sub postUrlInit {
}
return OK;
}"
)
);
$class->lmLog( "Compiling POST request for $url", 'debug' );
$transform->{$url} = sub {

View File

@ -78,7 +78,8 @@ sub forgeHeadersInit {
#$sub = "\$forgeHeaders->{'$vhost'} = sub {$sub};";
#eval "$sub";
$forgeHeaders->{$vhost} = $class->safe->reval("sub {$sub}");
$forgeHeaders->{$vhost} =
$class->safe->wrap_code_ref( $class->safe->reval("sub {$sub}") );
$class->lmLog( "$class: Unable to forge headers: $@: sub {$sub}",
'error' )
if ($@);

View File

@ -151,7 +151,8 @@ sub displayModule {
# Else parse display condition
my $cond = $self->{modules}->{$modulename};
$cond =~ s/\$(\w+)/$self->{portalObject}->{sessionInfo}->{$1}/g;
return $self->_safe->reval("sub {return ( $cond )}");
return $self->safe->wrap_code_ref(
$self->_safe->reval("sub {return ( $cond )}") );
return 0;
}
@ -565,7 +566,9 @@ sub _conditionSub {
$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->reval("sub {my \$self = shift; return ( $cond )}");
$sub =
$self->safe->wrap_code_ref(
$self->_safe->reval("sub {my \$self = shift; return ( $cond )}") );
return $sub;
}

View File

@ -368,7 +368,9 @@ sub _conditionSub {
$cond =~ s/\$date/&POSIX::strftime("%Y%m%d%H%M%S",localtime())/e;
$cond =~ s/\$(\w+)/$h->{$1}/g;
my $sub;
$sub = $self->safe->reval("sub {my \$self = shift; return ( $cond )}");
$sub =
$self->safe->wrap_code_ref(
$self->safe->reval("sub {my \$self = shift; return ( $cond )}") );
return $sub;
}