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

View File

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

View File

@ -151,7 +151,8 @@ sub displayModule {
# Else parse display condition # Else parse display condition
my $cond = $self->{modules}->{$modulename}; my $cond = $self->{modules}->{$modulename};
$cond =~ s/\$(\w+)/$self->{portalObject}->{sessionInfo}->{$1}/g; $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; return 0;
} }
@ -565,7 +566,9 @@ sub _conditionSub {
$cond =~ s/\$date/&POSIX::strftime("%Y%m%d%H%M%S",localtime())/e; $cond =~ s/\$date/&POSIX::strftime("%Y%m%d%H%M%S",localtime())/e;
$cond =~ s/\$(\w+)/\$self->{portalObject}->{sessionInfo}->{$1}/g; $cond =~ s/\$(\w+)/\$self->{portalObject}->{sessionInfo}->{$1}/g;
my $sub; 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; 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/\$date/&POSIX::strftime("%Y%m%d%H%M%S",localtime())/e;
$cond =~ s/\$(\w+)/$h->{$1}/g; $cond =~ s/\$(\w+)/$h->{$1}/g;
my $sub; 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; return $sub;
} }