From 099d52bc4ebc4ee5a36a0cf6d90ce66a230adf0d Mon Sep 17 00:00:00 2001
From: kent1 <kent1@arscenic.info>
Date: Tue, 12 Feb 2013 10:32:36 +0000
Subject: [PATCH] =?UTF-8?q?V=C3=A9rifier=20que=20l'image=20temporaire=20ex?=
 =?UTF-8?q?iste=20bien=20(cr=C3=A9=C3=A9e=20par=20GD)=20avant=20de=20faire?=
 =?UTF-8?q?=20un=20getimagesize=20qui=20risque=20de=20renvoyer=20un=20warn?=
 =?UTF-8?q?ing?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Si non, on renvoit false
---
 ecrire/inc/filtres_images_lib_mini.php | 50 ++++++++++++++------------
 1 file changed, 28 insertions(+), 22 deletions(-)

diff --git a/ecrire/inc/filtres_images_lib_mini.php b/ecrire/inc/filtres_images_lib_mini.php
index f93aace205..6f373026cb 100644
--- a/ecrire/inc/filtres_images_lib_mini.php
+++ b/ecrire/inc/filtres_images_lib_mini.php
@@ -365,20 +365,22 @@ function _imagecreatefromgif($filename){
  * @param string $fichier
  * 		Le path vers l'image (ex : local/cache-vignettes/L180xH51/image.png).
  * @return bool
- * 		false si l'image créée a une largeur nulle ;
+ * 		false si l'image créée a une largeur nulle ou n'existe pas ;
  * 		true si une image est bien retournée.
  */
 function _image_imagepng($img, $fichier) {
 	if (!function_exists('imagepng')) return false;
 	$tmp = $fichier.".tmp";
 	$ret = imagepng($img,$tmp);
+	if(file_exists($tmp)){
+		$taille_test = getimagesize($tmp);
+		if ($taille_test[0] < 1) return false;
 	
-	$taille_test = getimagesize($tmp);
-	if ($taille_test[0] < 1) return false;
-
-	spip_unlink($fichier); // le fichier peut deja exister
-	@rename($tmp, $fichier);
-	return $ret;
+		spip_unlink($fichier); // le fichier peut deja exister
+		@rename($tmp, $fichier);
+		return $ret;
+	}
+	return false;
 }
 
 /**
@@ -390,21 +392,22 @@ function _image_imagepng($img, $fichier) {
  * @param string $fichier
  * 		Le path vers l'image (ex : local/cache-vignettes/L180xH51/image.gif).
  * @return bool
- * 		false si l'image créée a une largeur nulle ;
+ * 		false si l'image créée a une largeur nulle ou n'existe pas ;
  * 		true si une image est bien retournée.
  */
 function _image_imagegif($img,$fichier) {
 	if  (!function_exists('imagegif')) return false;
 	$tmp = $fichier.".tmp";
 	$ret = imagegif($img,$tmp);
-
-	$taille_test = getimagesize($tmp);
-	if ($taille_test[0] < 1) return false;
-
-
-	spip_unlink($fichier); // le fichier peut deja exister
-	@rename($tmp, $fichier);
-	return $ret;
+	if(file_exists($tmp)){
+		$taille_test = getimagesize($tmp);
+		if ($taille_test[0] < 1) return false;
+		
+		spip_unlink($fichier); // le fichier peut deja exister
+		@rename($tmp, $fichier);
+		return $ret;
+	}
+	return false;
 }
 
 /**
@@ -421,7 +424,7 @@ function _image_imagegif($img,$fichier) {
  * 		valeur (85) de la constante _IMG_GD_QUALITE (modifiable depuis
  * 		mes_options.php).
  * @return bool
- * 		false si l'image créée a une largeur nulle ;
+ * 		false si l'image créée a une largeur nulle ou n'existe pas ;
  * 		true si une image est bien retournée.
  */
 function _image_imagejpg($img,$fichier,$qualite=_IMG_GD_QUALITE) {
@@ -429,12 +432,15 @@ function _image_imagejpg($img,$fichier,$qualite=_IMG_GD_QUALITE) {
 	$tmp = $fichier.".tmp";
 	$ret = imagejpeg($img,$tmp, $qualite);
 
-	$taille_test = getimagesize($tmp);
-	if ($taille_test[0] < 1) return false;
+	if(file_exists($tmp)){
+		$taille_test = getimagesize($tmp);
+		if ($taille_test[0] < 1) return false;
 
-	spip_unlink($fichier); // le fichier peut deja exister
-	@rename($tmp, $fichier);
-	return $ret;
+		spip_unlink($fichier); // le fichier peut deja exister
+		@rename($tmp, $fichier);
+		return $ret;
+	}
+	return false;
 }
 
 /**
-- 
GitLab