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