summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--post.php34
1 files changed, 34 insertions, 0 deletions
diff --git a/post.php b/post.php
index 6c90503b..8420c6a0 100644
--- a/post.php
+++ b/post.php
@@ -431,6 +431,40 @@
}
require_once 'inc/image.php';
+
+ if($config['imagick']) {
+ // This is tricky, because Imagick won't let us find
+ // an image's dimensions without loading it all into
+ // memory first, unlike GD which provides the
+ // getimagesize() to do exactly that. This section
+ // is why GD is required, even when using Imagick
+ // instead. There doesn't seem to be an alternative.
+ // Necessary for security, as Imagick even ignores
+ // PHP's memory limit.
+
+ // first try GD's getimagesize()
+ if($size = @getimagesize($post['file'])) {
+ if($size[0] > $config['max_width'] || $size[1] > $config['max_height']) {
+ file_unlink($post['file']);
+ error($config['error']['maxsize']);
+ }
+ } else {
+ // GD failed
+ // TODO?
+ }
+ } else {
+ // find dimensions of an image using GD
+ if(!$size = @getimagesize($post['file'])) {
+ file_unlink($post['file']);
+ error($config['error']['invalidimg']);
+ }
+ if($size[0] > $config['max_width'] || $size[1] > $config['max_height']) {
+ file_unlink($post['file']);
+ error($config['error']['maxsize']);
+ }
+ }
+
+
// create image object
$image = new Image($post['file'], $post['extension']);