From 52dbcffd8e75b56204f0cf481e70ff33c5272970 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 27 Apr 2024 23:57:32 -0400 Subject: [PATCH] Add shortcut if any other valid PKZIP blocks found --- .../Deserializers/PKZIP.cs | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) 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); }