-
Notifications
You must be signed in to change notification settings - Fork 994
Description
Describe the bug
When other programs (such as Bandizip) compress files into password-protected Zip files, using this library to extract them will throw an exception.
When the 'ZipEntry' is fully read, an exception will be thrown on the next read attempt.
ICSharpCode.SharpZipLib.Zip.ZipException: Data descriptor signature not found
`
// An exception will be thrown here.
while ((ze = zis.GetNextEntry()) != null) {
string filePath = Path.Combine(targetFolderPath, ze.Name);
string directoryPath = Path.GetDirectoryName(filePath) ?? string.Empty;
if (!string.IsNullOrEmpty(directoryPath) && !Directory.Exists(directoryPath)) {
Directory.CreateDirectory(directoryPath);
}
if (File.Exists(filePath)) {
File.Delete(filePath);
}
if (!ze.IsDirectory) {
long nCur = 0;
long nLength = zis.Length;
OnUnZipEntryStart(ze.Name);
OnUnZipEntryProgress(0, nLength);
using (FileStream fs = File.Create(filePath)) {
int sourceBytes;
do {
//An exception will be thrown here.
sourceBytes = zis.Read(data, 0, data.Length);
nCur += sourceBytes;
fs.Write(data, 0, sourceBytes);
} while (sourceBytes > 0);
}
}
}
`
Reproduction Code
No response
Steps to reproduce
When the 'ZipEntry' is fully read
On subsequent reads, it is theoretically expected to return 0.
But throw ICSharpCode.SharpZipLib.Zip.ZipException: Data descriptor signature not found
Expected behavior
None
Operating System
Windows
Framework Version
.NET Framework 4.x
Tags
No response
Additional context
No response