LEMONLDAP::NG : possible overload of safe shared functions

This commit is contained in:
Xavier Guimard 2008-11-12 17:32:58 +00:00
parent b6102d9974
commit d8d2951015

View File

@ -443,6 +443,14 @@ sub tree2conf {
return $config;
}
sub safe {
my $self = shift;
return $self->{safe} if($self->{safe});
$self->{safe} = Safe->new;
$self->{safe}->share('&encode_base64');
return $self->{safe};
}
# Configuration check : before saving, we try to find faults in configuration
sub checkConf {
my $self = shift;
@ -484,9 +492,7 @@ sub checkConf {
$expr .= "my \$$_ = '1';";
}
# Load and check macros
my $safe = new Safe;
$safe->share('&encode_base64');
$safe->reval($expr);
$self->safe->reval($expr);
if ($@) {
$result = 0;
$response->error( &txt_unknownErrorInVars . " ($@)" );
@ -503,7 +509,7 @@ sub checkConf {
}
# Test macro values;
$expr .= "my \$$k = $v;";
$safe->reval($expr);
$self->safe->reval($expr);
if ($@) {
$response->error( &txt_macro . " $k : " . &txt_syntaxError . " : $@");
$result = 0;
@ -528,7 +534,7 @@ sub checkConf {
$response->warning( &txt_group . " $k " . &txt_containsAnAssignment );
}
# Test boolean expression
$safe->reval( $expr . "\$groups = '$k' if($v);" );
$self->safe->reval( $expr . "\$groups = '$k' if($v);" );
if ($@) {
$response->error( &txt_group . " $k " . &txt_syntaxError );
$result = 0;
@ -545,9 +551,9 @@ sub checkConf {
# Test regular expressions
unless ( $reg eq 'default' ) {
$reg =~ s/#/\\#/g;
$safe->reval( $expr . "my \$r = qr#$reg#;" );
$self->safe->reval( $expr . "my \$r = qr#$reg#;" );
if ($@) {
$response->error( &txt_rule . " $vh -> \"$reg\" : " . &txt_syntaxError );
$response->error( &txt_rule . " $vh -> \"$reg\" : " . &txt_syntaxError . ": $@" );
$result = 0;
}
}
@ -558,9 +564,9 @@ sub checkConf {
$response->warning( &txt_rule . " $vh -> \"$reg\" : " . &txt_containsAnAssignment );
}
$safe->reval( $expr . "my \$r=1 if($v);" );
$self->safe->reval( $expr . "my \$r=1 if($v);" );
if ($@) {
$response->error( &txt_rule . " $vh -> \"$reg\" : " . &txt_syntaxError );
$response->error( &txt_rule . " $vh -> \"$reg\" : " . &txt_syntaxError . ": $@" );
$result = 0;
}
}
@ -584,7 +590,7 @@ sub checkConf {
$response->warning( &txt_header . " $vh -> $header " . &txt_containsAnAssignment );
}
# Perl expression
$safe->reval( $expr . "my \$r = $v;" );
$self->safe->reval( $expr . "my \$r = $v;" );
if ($@) {
$response->error( &txt_header . " $vh -> $header " . &txt_syntaxError );
$result = 0;