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;
}
}