From b326fb5af4df0c8b0845270ff90c34d4ddac7ca0 Mon Sep 17 00:00:00 2001 From: djmaze Date: Thu, 28 Oct 2021 21:32:59 +0200 Subject: [PATCH] Improved error handling for exif_read_data() File not supported --- .../app/libraries/snappymail/image/exif.php | 31 +++++++++++++++++++ .../app/libraries/snappymail/image/gd2.php | 6 ++-- .../libraries/snappymail/image/gmagick.php | 8 ++--- 3 files changed, 36 insertions(+), 9 deletions(-) create mode 100644 snappymail/v/0.0.0/app/libraries/snappymail/image/exif.php diff --git a/snappymail/v/0.0.0/app/libraries/snappymail/image/exif.php b/snappymail/v/0.0.0/app/libraries/snappymail/image/exif.php new file mode 100644 index 000000000..2558176b3 --- /dev/null +++ b/snappymail/v/0.0.0/app/libraries/snappymail/image/exif.php @@ -0,0 +1,31 @@ +file = 'blob'; $gd2->type = (int) $imginfo[2]; $gd2->format = $format; - if (\is_callable('exif_read_data') && $exif = \exif_read_data('data://'.$imginfo['mime'].';base64,' . \base64_encode($data))) { - $gd2->orientation = \max(1, \intval($oMetadata['IFD0.Orientation'] ?? 0)); - } + $gd2->orientation = Exif::getImageOrientation($data, $imginfo); return $gd2; } diff --git a/snappymail/v/0.0.0/app/libraries/snappymail/image/gmagick.php b/snappymail/v/0.0.0/app/libraries/snappymail/image/gmagick.php index 38480d586..6980e033a 100644 --- a/snappymail/v/0.0.0/app/libraries/snappymail/image/gmagick.php +++ b/snappymail/v/0.0.0/app/libraries/snappymail/image/gmagick.php @@ -7,7 +7,7 @@ if (!\class_exists('Gmagick',false)) { return; } class GMagick extends \Gmagick implements \SnappyMail\Image { private - $orientation = 1; + $orientation = 0; function __destruct() { @@ -22,10 +22,8 @@ class GMagick extends \Gmagick implements \SnappyMail\Image } if (\method_exists($gmagick, 'getImageOrientation')) { $gmagick->orientation = $gmagick->getImageOrientation(); - } else if (\is_callable('exif_read_data') && $imginfo = \getimagesizefromstring($data)) { - if ($exif = \exif_read_data('data://'.$imginfo['mime'].';base64,' . \base64_encode($data))) { - $gmagick->orientation = \max(1, \intval($exif['IFD0.Orientation'] ?? 0)); - } + } else { + $gd2->orientation = Exif::getImageOrientation($data); } return $gmagick; }