diff --git a/src/ICSharpCode.SharpZipLib/Zip/ZipInputStream.cs b/src/ICSharpCode.SharpZipLib/Zip/ZipInputStream.cs
index fc783caa0..829cbc9b1 100644
--- a/src/ICSharpCode.SharpZipLib/Zip/ZipInputStream.cs
+++ b/src/ICSharpCode.SharpZipLib/Zip/ZipInputStream.cs
@@ -206,10 +206,9 @@ public ZipEntry GetNextEntry()
string name = ZipStrings.ConvertToStringExt(flags, buffer);
- entry = new ZipEntry(name, versionRequiredToExtract)
+ entry = new ZipEntry(name, versionRequiredToExtract, ZipConstants.VersionMadeBy, (CompressionMethod)method)
{
Flags = flags,
- CompressionMethod = (CompressionMethod)method
};
if ((flags & 8) == 0)
diff --git a/test/ICSharpCode.SharpZipLib.Tests/Zip/StreamHandling.cs b/test/ICSharpCode.SharpZipLib.Tests/Zip/StreamHandling.cs
index 43676f77b..a2a9f635b 100644
--- a/test/ICSharpCode.SharpZipLib.Tests/Zip/StreamHandling.cs
+++ b/test/ICSharpCode.SharpZipLib.Tests/Zip/StreamHandling.cs
@@ -324,5 +324,33 @@ public void SingleLargeEntry()
}
);
}
+
+ const string BZip2CompressedZip =
+ "UEsDBC4AAAAMAEyxgU5p3ou9JwAAAAcAAAAFAAAAYS5kYXRCWmg5MUFZJlNZ0buMcAAAAkgACABA" +
+ "ACAAIQCCCxdyRThQkNG7jHBQSwECMwAuAAAADABMsYFOad6LvScAAAAHAAAABQAAAAAAAAAAAAAA" +
+ "AAAAAAAAYS5kYXRQSwUGAAAAAAEAAQAzAAAASgAAAAAA";
+
+ ///
+ /// Should fail to read a zip with BZip2 compression
+ ///
+ [Test]
+ [Category("Zip")]
+ public void ShouldReadBZip2EntryButNotDecompress()
+ {
+ var fileBytes = System.Convert.FromBase64String(BZip2CompressedZip);
+
+ using (var input = new MemoryStream(fileBytes, false))
+ {
+ var zis = new ZipInputStream(input);
+ var entry = zis.GetNextEntry();
+
+ Assert.That(entry.Name, Is.EqualTo("a.dat"), "Should be able to get entry name");
+ Assert.That(entry.CompressionMethod, Is.EqualTo(CompressionMethod.BZip2), "Entry should be BZip2 compressed");
+ Assert.That(zis.CanDecompressEntry, Is.False, "Should not be able to decompress BZip2 entry");
+
+ var buffer = new byte[1];
+ Assert.Throws(() => zis.Read(buffer, 0, 1), "Trying to read the stream should throw");
+ }
+ }
}
}