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']);