Absence de contrôle de la date d'expiration en modification de sondage
Lors de la création du sondage, le code teste la date saisie par rapport à un minimum et un maximum. Dans create_classic_poll.php, ligne 72 :
if ($time < $min_expiry_time) {
$_SESSION['form']->end_date = $min_expiry_time;
} elseif ($max_expiry_time < $time) {
$_SESSION['form']->end_date = $max_expiry_time;
} else {
$_SESSION['form']->end_date = $time;
}
Lors de la modification de la date d'expiration après que le sondage soit créé, il n'y a plus ce test. Dans app/classes/Framadate/Service/AdminPollService.php, ligne 37 :
function updatePoll($poll) {
global $config;
if ($poll->end_date > $poll->creation_date) {
return $this->pollRepository->update($poll);
} else {
return false;
}
}
Problèmes :
a) possibilité de mettre une date dans un futur lointain, très lointain… (voir ci-dessus : if ($poll->end_date > $poll->creation_date) {
) ;
b) possibilité de mettre une date passée alors que factuellement des votes ont pu avoir lieu après cette date.
Suggestions :
- modifier le code pour renforcer le test ;
- mutualiser le code de test entre create_classic_poll.php, create_date_poll.php et AdminPollService.php.