--- IFDReader.cs.orig	2011-02-22 17:05:22.499760999 +0000
+++ IFDReader.cs	2011-03-16 11:08:36.517845004 +0000
@@ -890,16 +890,20 @@
 				reader.Read ();
 				return new MakernoteIFDEntry (tag, ifd_structure, MakernoteType.Leica, header.Mid (0, 8), 10, false, null);
 			}
+			if ((2 + (header.Mid (0, 2).ToUShort (is_bigendian)) * 12) < count) {
+				try {
+					IFDReader reader =
+						new IFDReader (file, is_bigendian, ifd_structure, base_offset, offset, max_offset);
 
-			try {
-				IFDReader reader =
-					new IFDReader (file, is_bigendian, ifd_structure, base_offset, offset, max_offset);
-
-				reader.Read ();
-				return new MakernoteIFDEntry (tag, ifd_structure, MakernoteType.Canon);
-			} catch {
-				return null;
+					reader.Read ();
+					return new MakernoteIFDEntry (tag, ifd_structure, MakernoteType.Canon);
+				} catch {
+					return null;
+				}
+			} else {
+				file.MarkAsCorrupt ("Unrecognised Makernote");
 			}
+			return null;
 		}
 
 #endregion
