diff --git a/SabreTools.Serialization/Deserializers/PKZIP.cs b/SabreTools.Serialization/Deserializers/PKZIP.cs index 86b72123..6830fec1 100644 --- a/SabreTools.Serialization/Deserializers/PKZIP.cs +++ b/SabreTools.Serialization/Deserializers/PKZIP.cs @@ -309,6 +309,20 @@ namespace SabreTools.Serialization.Deserializers return signaturePosition; } + // If we find any other signature + switch (possibleSignature) + { + case ArchiveExtraDataRecordSignature: + case CentralDirectoryFileHeaderSignature: + case DataDescriptorSignature: + case DigitalSignatureSignature: + case EndOfCentralDirectoryLocator64Signature: + case EndOfCentralDirectoryRecord64Signature: + case LocalFileHeaderSignature: + data.Seek(current, SeekOrigin.Begin); + return -1; + } + // Seek backward 5 bytes, if possible data.Seek(-5, SeekOrigin.Current); } @@ -377,6 +391,20 @@ namespace SabreTools.Serialization.Deserializers return signaturePosition; } + // If we find any other signature + switch (possibleSignature) + { + case ArchiveExtraDataRecordSignature: + case CentralDirectoryFileHeaderSignature: + case DataDescriptorSignature: + case DigitalSignatureSignature: + case EndOfCentralDirectoryRecordSignature: + case EndOfCentralDirectoryRecord64Signature: + case LocalFileHeaderSignature: + data.Seek(current, SeekOrigin.Begin); + return -1; + } + // Seek backward 5 bytes, if possible data.Seek(-5, SeekOrigin.Current); } @@ -512,6 +540,20 @@ namespace SabreTools.Serialization.Deserializers return signaturePosition; } + // If we find any other signature + switch (possibleSignature) + { + case CentralDirectoryFileHeaderSignature: + case DataDescriptorSignature: + case DigitalSignatureSignature: + case EndOfCentralDirectoryLocator64Signature: + case EndOfCentralDirectoryRecordSignature: + case EndOfCentralDirectoryRecord64Signature: + case LocalFileHeaderSignature: + data.Seek(current, SeekOrigin.Begin); + return -1; + } + // Seek backward 5 bytes, if possible data.Seek(-5, SeekOrigin.Current); }