Skip to content
Extraits de code Groupes Projets
Valider 051cfac1 rédigé par Fil's avatar Fil
Parcourir les fichiers

accepter les documents dont le nom contient deux .. (mais changer leur nom), resoud #978

parent d1df4574
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -49,7 +49,7 @@ function ajouter_un_document($source, $nom_envoye, $type_lien, $id_lien, $mode, ...@@ -49,7 +49,7 @@ function ajouter_un_document($source, $nom_envoye, $type_lien, $id_lien, $mode,
// Documents distants : pas trop de verifications bloquantes, mais un test // Documents distants : pas trop de verifications bloquantes, mais un test
// via une requete HEAD pour savoir si la ressource existe (non 404), si le // via une requete HEAD pour savoir si la ressource existe (non 404), si le
// content-type est connu, et si possible recuperer la taille, voire plus. // content-type est connu, et si possible recuperer la taille, voire plus.
spip_log ("ajout du document $nom_envoye (M '$mode' T '$type_lien' L '$id_lien' D '$id_document')"); spip_log ("ajout du document $source $nom_envoye (M '$mode' T '$type_lien' L '$id_lien' D '$id_document')");
if ($mode == 'distant') { if ($mode == 'distant') {
include_spip('inc/distant'); include_spip('inc/distant');
if ($a = recuperer_infos_distantes($source)) { if ($a = recuperer_infos_distantes($source)) {
...@@ -123,7 +123,9 @@ function ajouter_un_document($source, $nom_envoye, $type_lien, $id_lien, $mode, ...@@ -123,7 +123,9 @@ function ajouter_un_document($source, $nom_envoye, $type_lien, $id_lien, $mode,
$fichier = copier_document($ext, $nom_envoye, $source); $fichier = copier_document($ext, $nom_envoye, $source);
spip_unlink($source); spip_unlink($source);
} else $fichier = copier_document($ext, $nom_envoye, $source); } else {
$fichier = copier_document($ext, $nom_envoye, $source);
}
// Verifier que le fichier est a son emplacement definitif // Verifier que le fichier est a son emplacement definitif
......
...@@ -51,6 +51,7 @@ function effacer_repertoire_temporaire($nom) { ...@@ -51,6 +51,7 @@ function effacer_repertoire_temporaire($nom) {
// http://doc.spip.org/@copier_document // http://doc.spip.org/@copier_document
function copier_document($ext, $orig, $source) { function copier_document($ext, $orig, $source) {
$orig = preg_replace(',\.\.+,', '.', $orig); // pas de .. dans le nom du doc
$dir = creer_repertoire_documents($ext); $dir = creer_repertoire_documents($ext);
$dest = preg_replace("/[^._=-\w\d]+/", "_", $dest = preg_replace("/[^._=-\w\d]+/", "_",
translitteration(preg_replace("/\.([^.]+)$/", "", translitteration(preg_replace("/\.([^.]+)$/", "",
...@@ -68,7 +69,7 @@ function copier_document($ext, $orig, $source) { ...@@ -68,7 +69,7 @@ function copier_document($ext, $orig, $source) {
$n = 0; $n = 0;
while (@file_exists($newFile = $dir . $dest .($n++ ? ('-'.$n) : '').'.'.$ext)); while (@file_exists($newFile = $dir . $dest .($n++ ? ('-'.$n) : '').'.'.$ext));
return (deplacer_fichier_upload($source, $newFile)) ? $newFile : ''; return deplacer_fichier_upload($source, $newFile);
} }
// //
...@@ -78,11 +79,7 @@ function copier_document($ext, $orig, $source) { ...@@ -78,11 +79,7 @@ function copier_document($ext, $orig, $source) {
// http://doc.spip.org/@deplacer_fichier_upload // http://doc.spip.org/@deplacer_fichier_upload
function deplacer_fichier_upload($source, $dest, $move=false) { function deplacer_fichier_upload($source, $dest, $move=false) {
// Securite // Securite
## !! interdit pour le moment d'uploader depuis l'espace prive (UPLOAD_DIRECT) $dest = preg_replace(',\.\.+,', '.', $dest);
if (strstr($dest, "..")) {
spip_log("stop deplacer_fichier_upload: '$dest'");
exit;
}
if ($move) $ok = @rename($source, $dest); if ($move) $ok = @rename($source, $dest);
else $ok = @copy($source, $dest); else $ok = @copy($source, $dest);
...@@ -99,7 +96,7 @@ function deplacer_fichier_upload($source, $dest, $move=false) { ...@@ -99,7 +96,7 @@ function deplacer_fichier_upload($source, $dest, $move=false) {
} }
spip_unlink($dest); spip_unlink($dest);
} }
return $ok; return $ok ? $dest : false;
} }
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter