Projet

Général

Profil

Anomalie #6384

Possible erreur de logique dans getTmpDir()

Ajouté par Jérôme Augé il y a environ 3 ans. Mis à jour il y a presque 3 ans.

Statut:
Intégré
Priorité:
Normal
Assigné à:
Version cible:
Début:
22/04/2016
Echéance:
% réalisé:

100%

Version source:
Solution proposée:
Principaux fichiers impactés:
Complexité:
Contrôle:
Thème:
Socle technique
Régression:
Non
Jalons: 3.2 R17

Description

En relisant le code de getTmpDir($def = '/tmp'), il semble y avoir une erreur de logique dans le cas ou CORE_TMPDIR est vide et ou $def est une chaîne vide aussi.

    $tmp = getParam('CORE_TMPDIR', $def);
    if (empty($tmp)) {
        return $def;
    }

1) Si CORE_TMPDIR est vide et $def non-vide, alors on retournera directement $def sans exécuter le code qui suit et qui permet de gérer le cas ou le répertoire $def serait en relatif pour le mettre en absolu par rapport à la racine du contexte : par conséquent, cela fera que le répertoire temporaire sera relatif au répertoire courant du code appelant.
2) Si CORE_TMPDIR est vide et $def est vide, alors l'appelant recevra une chaîne vide ce qui pourrait faire qu'il crée ses fichiers temporaires dans son répertoire courante : ce qui n'est généralement pas souhaitable.

Je pense qu'il faudrait corriger ce code pour gérer les 2 cas ci-dessus :

    $tmp = getParam('CORE_TMPDIR', $def);
    if (empty($tmp)) {
        if (empty($def)) {
            $tmp = './var/tmp'; // Forcer la valeur par défaut de CORE_TMPDIR d'une installation vierge par défaut
        } else {
            $tmp = $def; // Utiliser la valeur par défaut $def fournie
        }
        /*
         * Dans tous les cas, ne pas retourner directment cette valeurs
         * pour ne pas shunter les traitement suivants pour mettre sous
         * forme absolue et créer le sous-répertoire `dcp`
         */
    }
    ...

Historique

#1 Mis à jour par Marc Claverie il y a presque 3 ans

  • Version cible mis à 3.2.23

#2 Mis à jour par Éric Brison il y a presque 3 ans

  • Assigné à mis à Jérôme Augé
  • Statut changé de Nouveau à Assigné

#3 Mis à jour par Jérôme Augé il y a presque 3 ans

  • % réalisé changé de 0 à 100

#4 Mis à jour par Éric Brison il y a presque 3 ans

  • Statut changé de Assigné à Intégré

Appliqué par commit internal-platfrom:commit:e4cf041c57101f5ae7943b77cc574b753c2c7bf7.

Formats disponibles : Atom PDF