Objet : Pour les administrateurs de serveurs de listes utilisant le logiciel Sympa
Archives de la liste
[sympa-fr] wwsympa.fcgi : Erreur 500 sur expression de recherche incorrecte
- From: Sylvain Amrani <adresse@cachée>
- To: adresse@cachée
- Subject: [sympa-fr] wwsympa.fcgi : Erreur 500 sur expression de recherche incorrecte
- Date: Tue, 14 Jun 2005 15:11:24 +0200
Bonjour,
Sur l'interface web, les expressions de recherche pour le do_search_list() sont interprétées, pour partie seulement, comme des regexp.
Cependant l'application de la regexp n'est pas dans un eval{}; ce qui casse le script en cas d'expression non valide (par exemple avec un crochet ouvrant uniquement). C'est extrêmement pénalisant, car apache recharge le cgi, et donc toutes les listes.
J'ai préféré pour ma part placer la regexp dans un eval{} et échapper les [] et () (j'ai en effet des subjects de listes qui contiennent ces caractères, et aucune chance d'enseigner les expressions régulières aux utilisateurs !). Par ailleurs, il m'a semblé que les paramètres étaient filtrés et que l'* ne parviendrait jamais à la fonction.
Sylvain.
[je ne peux pas vous donner de .diff, car mon fichier est trop différent] :
## Regexp
$param->{'filter'} = $in{'filter'};
$param->{'regexp'} = $param->{'filter'};
$param->{'regexp'} =~ s/\\/\\\\/g;
$param->{'regexp'} =~ s/\./\\\./g;
$param->{'regexp'} =~ s/\*/\.\*/g;
$param->{'regexp'} =~ s/\+/\\\+/g;
$param->{'regexp'} =~ s/\?/\\\?/g;
$param->{'regexp'} =~ s/\[/\\\[/g;
$param->{'regexp'} =~ s/\]/\\\]/g;
$param->{'regexp'} =~ s/\(/\\\)/g;
$param->{'regexp'} =~ s/\)/\\\)/g;
## Members list
my $record = 0;
foreach my $l ( &List::get_lists($robot) ) {
my $is_admin;
my $list = new List ($l, $robot);
## Search filter
my $regtest = eval { (($list->{'name'} !~ /$param->{'regexp'}/i)
&& ($list->{'admin'}{'subject'} !~ /$param->{'regexp'}/i)) };
unless (defined($regtest)) {
&error_message('syntax_errors', {'params' => 'filter'});
&wwslog('err','do_search_list: syntax error');
return undef;
}
next if $regtest;
#next if (($list->{'name'} !~ /$param->{'regexp'}/i)
# && ($list->{'admin'}{'subject'} !~ /$param->{'regexp'}/i));
-
[sympa-fr] wwsympa.fcgi : Erreur 500 sur expression de recherche incorrecte,
Sylvain Amrani, 14/06/2005
- Re: [sympa-fr] wwsympa.fcgi : Erreur 500 sur expression de recherche incorrecte, Olivier Salaün - CRU, 15/06/2005
Archives gérées par MHonArc 2.6.19+.