]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
move image type checking to constructor, so checking will be done in all cases
authorCraig Andrews <candrews@integralblue.com>
Fri, 12 Mar 2010 01:12:32 +0000 (20:12 -0500)
committerCraig Andrews <candrews@integralblue.com>
Fri, 12 Mar 2010 01:12:32 +0000 (20:12 -0500)
check if the relevant image handling function exists when deciding if the image type is supported

lib/imagefile.php

index 7b047945528ec4dffa331b09849b9f2db82663fd..2134623b18ca1686ff17a43db35d50c56e277086 100644 (file)
@@ -60,6 +60,21 @@ class ImageFile
         $this->filepath = $filepath;
 
         $info = @getimagesize($this->filepath);
+
+        if (!(
+            ($info[2] == IMAGETYPE_GIF && function_exists('imagecreatefromgif')) ||
+            ($info[2] == IMAGETYPE_JPEG && function_exists('imagecreatefromjpeg')) ||
+            $info[2] == IMAGETYPE_BMP ||
+            ($info[2] == IMAGETYPE_WBMP && function_exists('imagecreatefromwbmp')) ||
+            ($info[2] == IMAGETYPE_XBM && function_exists('imagecreatefromxbm')) ||
+            ($info[2] == IMAGETYPE_XPM && function_exists('imagecreatefromxpm')) ||
+            ($info[2] == IMAGETYPE_PNG && function_exists('imagecreatefrompng')))) {
+
+            @unlink($_FILES[$param]['tmp_name']);
+            throw new Exception(_('Unsupported image file format.'));
+            return;
+        }
+
         $this->type = ($info) ? $info[2]:$type;
         $this->width = ($info) ? $info[0]:$width;
         $this->height = ($info) ? $info[1]:$height;
@@ -97,19 +112,6 @@ class ImageFile
             return;
         }
 
-        if ($info[2] !== IMAGETYPE_GIF &&
-            $info[2] !== IMAGETYPE_JPEG &&
-            $info[2] !== IMAGETYPE_BMP &&
-            $info[2] !== IMAGETYPE_WBMP &&
-            $info[2] !== IMAGETYPE_XBM &&
-            $info[2] !== IMAGETYPE_XPM &&
-            $info[2] !== IMAGETYPE_PNG) {
-
-            @unlink($_FILES[$param]['tmp_name']);
-            throw new Exception(_('Unsupported image file format.'));
-            return;
-        }
-
         return new ImageFile(null, $_FILES[$param]['tmp_name']);
     }