From c3bbd04256f8798b763c940f1411d9c179c82be2 Mon Sep 17 00:00:00 2001
From: Cerdic <cedric@yterium.com>
Date: Wed, 17 Jan 2007 09:29:40 +0000
Subject: [PATCH] ne pas prendre les fichiers dos (c:\..) pour des fichiers
 distants ne pas accepter n'importe quelle extension (fil)

---
 ecrire/inc/distant.php | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/ecrire/inc/distant.php b/ecrire/inc/distant.php
index 9cecc5ddde..9a892884ca 100644
--- a/ecrire/inc/distant.php
+++ b/ecrire/inc/distant.php
@@ -270,7 +270,7 @@ function nom_fichier_copie_locale($source, $extension) {
 // http://doc.spip.org/@fichier_copie_locale
 function fichier_copie_locale($source) {
 	// Si c'est une image locale pas de souci
-	if (!preg_match(',^(\w+:),', $source)) {
+	if (!preg_match(',^\w+://,', $source)) {
 		if (_DIR_RACINE)
 			$source = preg_replace(',^'.preg_quote(_DIR_RACINE).',', '', $source);
 		return $source;
@@ -278,8 +278,12 @@ function fichier_copie_locale($source) {
 
 	$extension = "";
 	$path_parts = pathinfo($source);
-	if (isset($path_parts['extension']) && strlen($path_parts['extension']))
-		$extension = $path_parts['extension'];
+	if (isset($path_parts['extension']) && strlen($path_parts['extension'])){
+		// verifier que c'est un type autorise
+		$t = spip_fetch_array(spip_query("SELECT extension FROM spip_types_documents WHERE extension="._q($path_parts['extension'])));
+		if ($t)
+			$extension = $t['extension'];
+	}
 	else {
 		// Si l'extension n'est pas precisee, aller la chercher dans la table
 		// des documents -- si la source n'est pas dans la table des documents,
-- 
GitLab