Bug de la fonction de téléchargement

HumpfHumpf Member
Bonjour,


En utilisant la fonction de téléchargement "?telechargement/xxxx" décrite dans le Wiki, je pense être tombé sur 2 problèmes (au moins en v5.1.5) :


1) La réécriture d'URL (plxMotor->urlRewrite()) ne supporte pas correctement le caractère "," qui est pourtant possible en sortie de plxEncrypt::base64url_encode()
En effet, la réécriture peut retourner ce genre d'URL (notez le "#" à la fin) :
http://localhost/xxx/index.php?telechargement/QWNpZEJhc3RhcmQtb25seS1hY2lkLTIwMTIubXAzKmMxYWZmNg#,,
Au lieu de ceci :
http://localhost/xxx/index.php?telechargement/QWNpZEJhc3RhcmQtb25seS1hY2lkLTIwMTIubXAzKmMxYWZmNg,,


Conséquence, le navigateur transmet la QueryString suivante (notez la fin) :
telechargement/QWNpZEJhc3RhcmQtb25seS1hY2lkLTIwMTIubXAzKmMxYWZmNg
Par chance, tout semble marcher (miraculeusement) car "," correspond au "=" qui est le caractère de padding de l'encodage en BASE64...


Actuellement dans class.plx.motor.php, il y a (ligne 905):
preg_match('/^([0-9a-z\_\-\.\/]+)?[\?]?([0-9a-z\_\-\.\/]+)?[\#]?(.*)$/i', $url, $args);
Il faudrait ajouter le caractère "," dans le second sous-pattern :
preg_match('/^([0-9a-z\_\-\.\/]+)?[\?]?([0-9a-z\_\-\.\/,]+)?[\#]?(.*)$/i', $url, $args);


2) L'appel à plxMotor->sendTelechargement() est erroné
Conséquence, le téléchargement échoue.


Actuellement dans class.plx.motor.php, il y a (ligne 228):
if($this->sendTelechargement($this->cible)) {
Il faudrait :
if($this->sendTelechargement($capture[2])) {


En tout cas, bravo aux auteurs pour ce CMS très clair et bien fait.


Humpf

Réponses

  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour Humpf

    Merci de t'etre penché sur le probleme. Je garde tout ça précieusement

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

Connectez-vous ou Inscrivez-vous pour répondre.