dolibarr-bugtrack
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Dolibarr-bugtrack] [bug #27469] Des documents ne peuvent plus êtretéléc


From: Sylvain Beucler
Subject: [Dolibarr-bugtrack] [bug #27469] Des documents ne peuvent plus êtretéléchargés: urldecode superflu
Date: Thu, 17 Sep 2009 13:35:07 +0000
User-agent: Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.14) Gecko/2009091010 Iceweasel/3.0.6 (Debian-3.0.6-3)

URL:
  <http://savannah.nongnu.org/bugs/?27469>

                 Summary: Des documents ne peuvent plus être téléchargés:
urldecode superflu
                 Project: Dolibarr
            Submitted by: Beuc
            Submitted on: jeu 17 sep 2009 13:35:04 GMT
                Severity: 3 - Normal
                  Status: None
                 Privacy: Public
             Assigned to: None
             Open/Closed: Open
         Discussion Lock: Any
                 Release: 2.6.1
        Operating System: None

    _______________________________________________________

Details:

L'erreur se produit quand on tente de télécharger un fichier contenant un
'+':

Dolibarr a détecté une erreur technique.
Voici les informations qui pourront aider au diagnostic:
Dolibarr: 2.6.1
Date: 20090917153026
Niveau de fonctionnalités: 0
Server: Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny3 with Suhosin-Patch
mod_ssl/2.2.9 OpenSSL/0.9.8g
Referer: https://XXX/dolibarr/comm/propal.php?propalid=68
Url sollicitée:
/dolibarr/document.php?modulepart=propal&file=DV200906054%2F200906054-DevisSigne%2BBCClient.pdf
MenuManager: eldy_backoffice.php/eldy_backoffice.php

Message: Le fichier
/var/www/public/dolibarr/documents/propale/DV200906054/200906054-DevisSigne
BCClient.pdf n'existe pas


Le fichier document.php utile la fonction PHP 'urlencode' pour convertir le
nom du document dans l'URL en nom de document pour le système de fichiers.

Hors, PHP a déjà fait cette opération. Par conséquent le résultat
(stocké dans $original_file) subit le décodage 2 fois. Cela ne pose pas de
problème dans le cas courant, quand le nom de fichier ne contient pas le
signe '%' ou '+', mais cela rendre les autres documents impossible à
télécharger.

Noter que $original_file est défini plusieurs fois: une fois tout en haut du
fichier, plus sa valeur est réinitialisée plus bas (copier/coller).

La modification suivante corrige le problème:

cvs diff: Diffing .
Index: document.php
===================================================================
RCS file: /sources/dolibarr/dolibarr/htdocs/document.php,v
retrieving revision 1.66
diff -u -r1.66 document.php
--- document.php        24 Feb 2009 22:52:55 -0000      1.66
+++ document.php        17 Sep 2009 13:27:21 -0000
@@ -66,7 +66,7 @@
 //$encoding='ISO-8859-1';
 
 $action = $_GET["action"];
-$original_file = urldecode($_GET["file"]);
+$original_file = $_GET["file"];
 $modulepart = urldecode($_GET["modulepart"]);
 $urlsource = urldecode($_GET["urlsource"]);
 





    _______________________________________________________

Reply to this item at:

  <http://savannah.nongnu.org/bugs/?27469>

_______________________________________________
  Message posté via/par Savannah
  http://savannah.nongnu.org/





reply via email to

[Prev in Thread] Current Thread [Next in Thread]