From 9b8d1487ef067b5bdb2ce7365cc65d0e7ec0fa44 Mon Sep 17 00:00:00 2001
From: Cerdic <cedric@yterium.com>
Date: Tue, 7 Dec 2021 10:45:48 +0100
Subject: [PATCH] Utiliser valider_url_distante() en plus de
 tester_url_absolue() avant de faire une copie locale sur un document distant
 (+ on reverifie apres copie_locale que la source est toujours licite et que
 rien n'a change entre temps)

---
 action/copier_local.php | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/action/copier_local.php b/action/copier_local.php
index 5715ac93..a0feac6c 100644
--- a/action/copier_local.php
+++ b/action/copier_local.php
@@ -59,12 +59,13 @@ function action_copier_local_post($id_document) {
 
 	// si la source est bien un fichier distant
 	// sinon c'est une donnee moisie, on ne fait rien
-	if (tester_url_absolue($source)) {
-		include_spip('inc/distant'); // pour 'copie_locale'
+	include_spip('inc/distant');
+	if (tester_url_absolue($source)
+		and valider_url_distante($source)) {
 		$fichier = copie_locale($source);
 		if (
 			$fichier
-			and tester_url_absolue($source)
+			and valider_url_distante($source)
 		) {
 			$fichier = _DIR_RACINE . $fichier;
 			$files = [];
@@ -86,6 +87,9 @@ function action_copier_local_post($id_document) {
 			return true;
 		} else {
 			spip_log("echec copie locale $source", 'medias' . _LOG_ERREUR);
+			if ($fichier) {
+				@unlink(_DIR_RACINE . $fichier);
+			}
 		}
 	} else {
 		spip_log("echec copie locale $source n'est pas une URL distante", 'medias' . _LOG_ERREUR);
-- 
GitLab