From db34aa44f697d58ebb221a15744ff7b0be6bbbc4 Mon Sep 17 00:00:00 2001
From: "kent1@arscenic.info" <>
Date: Tue, 4 Dec 2012 14:49:38 +0000
Subject: [PATCH] On revient sur r66991
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Après déplacement du fichier dans IMG/, on regarde si on peut récupérer une taille du fichier, si on ne peut pas, c'est qu'il fait 0 octets et donc corrompu (ou problématique et inutile)

On ajoute cette vérification sur la génération du zip (au cas où)
---
 action/ajouter_documents.php | 29 ++++++++++++++++++++---------
 1 file changed, 20 insertions(+), 9 deletions(-)

diff --git a/action/ajouter_documents.php b/action/ajouter_documents.php
index 7e4162b2..09d788bc 100644
--- a/action/ajouter_documents.php
+++ b/action/ajouter_documents.php
@@ -316,17 +316,19 @@ function fixer_fichier_upload($file, $mode=''){
 	/**
 	 * On vérifie que le fichier existe et qu'il contient quelque chose 
 	 */
-	if (
-		!$file['tmp_name']
-		OR !@file_exists($file['tmp_name'])
-		OR !$infos['taille'] = @intval(filesize($file['tmp_name']))) {
-			spip_log ("Echec copie du fichier ".$file['tmp_name']);
-			return _T('medias:erreur_copie_fichier',array('nom'=> $file['tmp_name']));
-	}
 	if (is_array($row=verifier_upload_autorise($file['name'], $mode))) {
 		if (!isset($row['autozip'])){
 			$row['fichier'] = copier_document($row['extension'], $file['name'], $file['tmp_name']);
-			return $row;
+			/**
+			 * On vérifie que le fichier a une taille
+			 * si non, on le supprime et on affiche une erreur
+			 */
+			if($row['fichier'] && (!$taille = @intval(filesize(get_spip_doc($row['fichier']))))) { 
+				spip_log ("Echec copie du fichier ".$file['tmp_name']." (taille de fichier indéfinie)");
+				spip_unlink(get_spip_doc($row['fichier']));
+				return _T('medias:erreur_copie_fichier',array('nom'=> $file['tmp_name']));
+			}else 
+				return $row;
 		}
 		// creer un zip comme demande
 		// pour encapsuler un fichier dont l'extension n'est pas supportee
@@ -365,7 +367,16 @@ function fixer_fichier_upload($file, $mode=''){
 
 			$row['fichier']  = copier_document($row['extension'], $file['name'], $source);
 			spip_unlink($source);
-			return $row;
+			/**
+			 * On vérifie que le fichier a une taille
+			 * si non, on le supprime et on affiche une erreur
+			 */
+			if($row['fichier'] && (!$taille = @intval(filesize(get_spip_doc($row['fichier']))))) { 
+				spip_log ("Echec copie du fichier ".$file['tmp_name']." (taille de fichier indéfinie)");
+				spip_unlink(get_spip_doc($row['fichier']));
+				return _T('medias:erreur_copie_fichier',array('nom'=> $file['tmp_name']));
+			}else 
+				return $row;
 		}
 	}
 	else
-- 
GitLab