diff --git a/OpenMetaverse/Imaging/OpenJPEG.cs b/OpenMetaverse/Imaging/OpenJPEG.cs index 21d20fd6..975bba6b 100644 --- a/OpenMetaverse/Imaging/OpenJPEG.cs +++ b/OpenMetaverse/Imaging/OpenJPEG.cs @@ -358,7 +358,27 @@ namespace OpenMetaverse.Imaging layerInfo[i].End = endPacket.end_pos; } - success = true; + // More sanity checking + if (layerInfo[layerInfo.Length - 1].End <= encoded.Length - 1) + { + success = true; + + for (int i = 0; i < layerInfo.Length; i++) + { + if (layerInfo[i].Start >= layerInfo[i].End || + (i > 0 && layerInfo[i].Start <= layerInfo[i - 1].End)) + { + success = false; + Logger.Log("Inconsistent packet data in JPEG2000 stream", Helpers.LogLevel.Warning); + } + } + } + else + { + Logger.Log(String.Format( + "Last packet end in JPEG2000 stream extends beyond the end of the file. filesize={0} layerend={1}", + encoded.Length, layerInfo[layerInfo.Length - 1].End), Helpers.LogLevel.Warning); + } } else {