From 086157cff8fc7d34596244265a19caa847c6936b Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Tue, 8 Jan 2019 12:50:36 +0100 Subject: [PATCH] Fixes #3990 All images uploaded to media section have umbracoHeight / umbracoWidth of 200x200px --- src/Umbraco.Core/IO/MediaFileSystem.cs | 3 ++- src/Umbraco.Core/Media/Exif/ImageFile.cs | 9 +++++---- src/Umbraco.Core/Media/TypeDetector/JpegDetector.cs | 3 +-- .../Media/TypeDetector/RasterizedTypeDetector.cs | 6 +++++- src/Umbraco.Core/Media/TypeDetector/TIFFDetector.cs | 10 +++++----- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/Umbraco.Core/IO/MediaFileSystem.cs b/src/Umbraco.Core/IO/MediaFileSystem.cs index 39cd7ba7ad..a4305506bb 100644 --- a/src/Umbraco.Core/IO/MediaFileSystem.cs +++ b/src/Umbraco.Core/IO/MediaFileSystem.cs @@ -365,7 +365,8 @@ namespace Umbraco.Core.IO { var jpgInfo = ImageFile.FromStream(stream); - if (jpgInfo.Format != ImageFileFormat.Unknown + if (jpgInfo != null + && jpgInfo.Format != ImageFileFormat.Unknown && jpgInfo.Properties.ContainsKey(ExifTag.PixelYDimension) && jpgInfo.Properties.ContainsKey(ExifTag.PixelXDimension)) { diff --git a/src/Umbraco.Core/Media/Exif/ImageFile.cs b/src/Umbraco.Core/Media/Exif/ImageFile.cs index 05a2a955c4..cfa0d90aa1 100644 --- a/src/Umbraco.Core/Media/Exif/ImageFile.cs +++ b/src/Umbraco.Core/Media/Exif/ImageFile.cs @@ -118,9 +118,9 @@ namespace Umbraco.Core.Media.Exif /// The encoding to be used for text metadata when the source encoding is unknown. /// The created from the file. public static ImageFile FromStream(Stream stream, Encoding encoding) - { + { // JPEG - if(JPEGDetector.IsOfType(stream)) + if (JPEGDetector.IsOfType(stream)) { return new JPEGFile(stream, encoding); } @@ -137,8 +137,9 @@ namespace Umbraco.Core.Media.Exif return new SVGFile(stream); } - throw new NotValidImageFileException (); - } + // We don't know + return null; + } #endregion } } diff --git a/src/Umbraco.Core/Media/TypeDetector/JpegDetector.cs b/src/Umbraco.Core/Media/TypeDetector/JpegDetector.cs index 5b68f6ad88..73c8519bb6 100644 --- a/src/Umbraco.Core/Media/TypeDetector/JpegDetector.cs +++ b/src/Umbraco.Core/Media/TypeDetector/JpegDetector.cs @@ -7,8 +7,7 @@ namespace Umbraco.Core.Media.TypeDetector public static bool IsOfType(Stream fileStream) { var header = GetFileHeader(fileStream); - - return header[0] == 0xff && header[1] == 0xD8; + return header != null && header[0] == 0xff && header[1] == 0xD8; } } } diff --git a/src/Umbraco.Core/Media/TypeDetector/RasterizedTypeDetector.cs b/src/Umbraco.Core/Media/TypeDetector/RasterizedTypeDetector.cs index 9777d55c20..858b9342fe 100644 --- a/src/Umbraco.Core/Media/TypeDetector/RasterizedTypeDetector.cs +++ b/src/Umbraco.Core/Media/TypeDetector/RasterizedTypeDetector.cs @@ -7,9 +7,13 @@ namespace Umbraco.Core.Media.TypeDetector public static byte[] GetFileHeader(Stream fileStream) { fileStream.Seek(0, SeekOrigin.Begin); - byte[] header = new byte[8]; + var header = new byte[8]; fileStream.Seek(0, SeekOrigin.Begin); + // Invalid header + if (fileStream.Read(header, 0, header.Length) != header.Length) + return null; + return header; } } diff --git a/src/Umbraco.Core/Media/TypeDetector/TIFFDetector.cs b/src/Umbraco.Core/Media/TypeDetector/TIFFDetector.cs index 2a6e42d0e0..6f4a05b7af 100644 --- a/src/Umbraco.Core/Media/TypeDetector/TIFFDetector.cs +++ b/src/Umbraco.Core/Media/TypeDetector/TIFFDetector.cs @@ -7,17 +7,17 @@ namespace Umbraco.Core.Media.TypeDetector { public static bool IsOfType(Stream fileStream) { - string tiffHeader = GetFileHeader(fileStream); - - return tiffHeader == "MM\x00\x2a" || tiffHeader == "II\x2a\x00"; + var tiffHeader = GetFileHeader(fileStream); + return tiffHeader != null && tiffHeader == "MM\x00\x2a" || tiffHeader == "II\x2a\x00"; } public static string GetFileHeader(Stream fileStream) { var header = RasterizedTypeDetector.GetFileHeader(fileStream); + if (header == null) + return null; - string tiffHeader = Encoding.ASCII.GetString(header, 0, 4); - + var tiffHeader = Encoding.ASCII.GetString(header, 0, 4); return tiffHeader; } }