Example #1
0
 internal bool CheckIntegrity(out string message)
 {
     message = (string)null;
     if (this.existedInArchive)
     {
         if (!ZipHelper.IsCompressionMethodSupported(this.CompressionMethod))
         {
             message = string.Format("Unsupported compression method: {0}.", (object)this.CompressionMethod);
             return(false);
         }
         if ((int)this.DiskStartNumber != (int)this.Archive.NumberOfThisDisk)
         {
             message = "Splitted archive is not supported.";
             return(false);
         }
         if (this.LocalHeaderOffset > this.Archive.Reader.BaseStream.Length)
         {
             message = "Local file header is corrupted.";
             return(false);
         }
         this.Archive.Reader.BaseStream.Seek(this.LocalHeaderOffset, SeekOrigin.Begin);
         this.localFileHeader = new LocalFileHeader();
         if (!this.localFileHeader.TryReadBlock(this.Archive.Reader))
         {
             message = "Local file header is corrupted.";
             return(false);
         }
         if (!this.ValidateLocalFileHeader())
         {
             message = "Local file header is corrupted.";
             return(false);
         }
         if (this.CompressedDataOffset + this.CompressedLength > this.Archive.Reader.BaseStream.Length)
         {
             message = "Local file header is corrupted.";
             return(false);
         }
     }
     return(true);
 }