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