summaryrefslogtreecommitdiff
path: root/inc/image.php
diff options
context:
space:
mode:
author8chan <admin@8chan.co>2014-10-11 15:41:16 -0700
committerczaks <marcin@6irc.net>2014-10-12 10:23:03 +0200
commit6052ed8d3d6b39e870fdb403584f05efde7d91c8 (patch)
tree40af661e24abddf1aa020fbc292848521b51fd60 /inc/image.php
parentb2cbb70da371dad7f9d399067b7e6df17d7a0b68 (diff)
SECURITY: imagemagick/graphicsmagick was ignoring all errors
So, in a much older patch I had a problem where an incorrect RGB profile would make image uploads fail. I fixed this by using strpos against the error message...but didn't check the return value correctly. That means that any error from gm/im was ignored. This caused people to upload too large images and flood /b/ with 1 x 10000 pixel images My fault, patched now. Sorry about that. Conflicts: inc/image.php
Diffstat (limited to 'inc/image.php')
-rw-r--r--inc/image.php14
1 files changed, 10 insertions, 4 deletions
diff --git a/inc/image.php b/inc/image.php
index eb8eb79b..7a68605d 100644
--- a/inc/image.php
+++ b/inc/image.php
@@ -330,6 +330,7 @@ class ImageConvert extends ImageBase {
$convert_args = str_replace('-auto-orient', '', $config['convert_args']);
else
$convert_args = &$config['convert_args'];
+
if (($error = shell_exec_error(($this->gm ? 'gm ' : '') . 'convert ' .
sprintf($convert_args,
$this->width,
@@ -361,10 +362,15 @@ class ImageConvert extends ImageBase {
$this->width,
$this->height,
escapeshellarg($this->temp)))) || !file_exists($this->temp)) {
- if (!file_exists($this->temp)) {
- $this->destroy();
- error(_('Failed to resize image!'), null, $error);
- }
+
+ if (strpos($error, "known incorrect sRGB profile") === false) {
+ $this->destroy();
+ error('Failed to resize image!', null, array('convert_error' => $error));
+ }
+ if (!file_exists($this->temp)) {
+ $this->destroy();
+ error(_('Failed to resize image!'), null, $error);
+ }
}
if ($size = $this->get_size($this->temp)) {
$this->width = $size[0];