- État Fermée
- Pourcentage achevé
- Type Anomalie
- Catégorie Téléchargements
- Assignée à Personne
- Système d'exploitation Freebox Server V6 (Révolution)
- Sévérité Haute
- Priorité Très Basse
- Basée sur la version 1.1.3
- Due pour la version Non décidée
-
Échéance
Non décidée
- Votes
- Privée
Ouverte par zakhar - 05/12/2011
FS#9101 - Impossible de télécharger un fichier contenant '?'
Enoncé du bug:
Lorsqu’un fichier comporte un ? (caractère : point d’interrogation / %3F) on ne peut pas le télécharger.
Si on tente de le faire on obtient une page d’erreur indiquant :
Firefox ne peut trouver le fichier à l’adresse http://mafreebox.freebox.fr/get.php.
Avec une erreur 404.
Comment reproduire :
renommer n’importe quel fichier avec un nom contenant un ?, dans mon exemple le fichier s’appelle ‘w?’ Tenter de le télécharger avec l’interface web.
Constatations :
Les entêtes envoyés sont bien :
(Post aller:)
filename=%2FDisque+dur%2FT%C3%A9l%C3%A9chargements%2Fw%3F
(On voit bien la fin, /w? correctement ‘escapé’ par le navigateur)
La réponse est :
HTTP/1.1 404 Not Found
Server: nginx
Date: Mon, 05 Dec 2011 17:46:38 GMT
Content-Type: text/html
Content-Length: 162
Connection: keep-alive
Content-Disposition: attachment; filename=”w?”
Il a donc bien compris qu’on voulait le fichier w?, ce fichier existe bien dans le répertoire (on vient de renommer) et pourtant on a une erreur 404.
Déduction :
Très certainement un mauvais ‘escape’ des caractères spéciaux en PhP qui fait que le ? dans le nom des fichiers est mal géré.
Autres bugs possibles similaires à tester :
Pour information, en ext3/4 (filesystem de la Freebox) les seuls caractères non valides dans un nom de fichier sont le / (parce que c’est le séparateur pour les chemins) et le ‘zéro binaire’ (pas facile à gérer en C dans les chaines ça !).
TOUS les autres caractères sont valides dans un nom de fichier (même des choses comme retour à la ligne !).
Je ferai l’essai plus tard avec les caractères %01 à %1F, qui sont difficiles à obtenir dans un nom de fichier... contrairement à un ? qui est trivial par la méthode ci-dessus. (Renommer marche bien avec les ‘?’, mais c’est géré par un CGI et pas par un PHP)
27.06.2013 09:16
Raison de la fermeture : Evolution intégrée
Commentaires de fermeture :
En 2.0.0
Chargement...
Activer les raccourcis clavier
- Alt + ⇧ Shift + l Se connecter/Se déconnecter
- Alt + ⇧ Shift + a Ouvrir une tâche
- Alt + ⇧ Shift + m Mes recherches
- Alt + ⇧ Shift + t Rechercher par ID de tâche
Liste des tâches
- o Ouvrir la tâche sélectionnée
- j Déplacer le curseur vers le bas
- k Déplacer le curseur vers le haut
Détails de la tâche
- n Tâche suivante
- p Tâche précédente
- Alt + ⇧ Shift + e ↵ Enter Modifier cette tâche
- Alt + ⇧ Shift + w Surveiller
- Alt + ⇧ Shift + y Fermer cette tâche
Édition de la tâche
- Alt + ⇧ Shift + s Enregistrer la tâche
Testé ce jour avec la 1.1.4 chargée à l’instant sur le ‘Server’, le bug persiste.
+1