Freebox Server (Pop V8/ Delta V7 / Revolution V6 / Server Mini 4K)

  • État Close
  • Type de tâche Anomalie
  • Catégorie Téléchargements
  • Assignée à Personne
  • Système d'exploitation Freebox Server V6 (Révolution)
  • Sévérité Haute
  • Priorité Normale
  • Basée sur la version 1.1.3
  • Due pour la version Non décidé
  • Date d'échéance Non décidé
  • Votes 0
  • Privée Non

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)

Close par  Freebox Robot (Freebox Robot)
Thursday 27 June, 2013 09:16:51
Raison de clôture :  Evolution intégrée
Commentaires supplémentaires de clôture :  En 2.0.0

Cette tache ne dépend pas d'autre tache

zakhar (zakhar)
Tuesday 6 December, 2011 18:23:00

Testé ce jour avec la 1.1.4 chargée à l’instant sur le ‘Server’, le bug persiste.

lemage77 (lemage77)
Friday 16 December, 2011 21:39:16

+1

Chargement...