- fix commit 3268: the jail_reval function must handle more cases

(references #630)
This commit is contained in:
David COUTADEUR 2014-03-17 14:38:22 +00:00
parent 8439c0692b
commit 2408e9e4af
2 changed files with 11 additions and 4 deletions

View File

@ -277,7 +277,7 @@ sub forgeHeadersInit {
); );
$self->safe( $jail->build_safe() ); $self->safe( $jail->build_safe() );
$forgeHeaders->{$alias} = $forgeHeaders->{$alias} =
$jail->jail_reval( $sub ); $jail->jail_reval( "sub{$sub}" );
Lemonldap::NG::Handler::Main::Logger->lmLog( Lemonldap::NG::Handler::Main::Logger->lmLog(
"$self: Unable to forge headers: $@: sub {$sub}", 'error' ) "$self: Unable to forge headers: $@: sub {$sub}", 'error' )
@ -475,7 +475,7 @@ sub conditionSub {
'customFunctions' => $self->customFunctions 'customFunctions' => $self->customFunctions
); );
$self->safe( $jail->build_safe() ); $self->safe( $jail->build_safe() );
my $sub = $jail->jail_reval( $cond ); my $sub = $jail->jail_reval( "sub{return($cond)}" );
# Return sub and protected flag # Return sub and protected flag
return ( $sub, 0 ); return ( $sub, 0 );

View File

@ -119,10 +119,17 @@ sub share_from {
sub jail_reval { sub jail_reval {
my ( $self, $reval ) = splice @_; my ( $self, $reval ) = splice @_;
# if nothing is returned by reval, add the return statement to
# the "no safe wrap" reval
my $nosw_reval = $reval;
if ( $reval !~ /^sub\{return\(.*\}$/ ) {
$nosw_reval =~ s/^sub{(.*)}$/sub{return($1)}/
}
return ( return (
SAFEWRAP SAFEWRAP
? $self->safe->wrap_code_ref( $self->safe->reval("sub{$reval}") ) ? $self->safe->wrap_code_ref( $self->safe->reval($reval) )
: $self->safe->reval("sub{return($reval)}") : $self->safe->reval($nosw_reval)
); );
} }