You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Steven Fontaine (Jira)" <ji...@apache.org> on 2020/02/25 20:06:00 UTC
[jira] [Updated] (COMPRESS-505) Multiple Reads of One
SevenZArchiveEntry Fails
[ https://issues.apache.org/jira/browse/COMPRESS-505?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Steven Fontaine updated COMPRESS-505:
-------------------------------------
Description:
I've run into a bug which occurs when attempting to read the same SevenZArchiveEntry stream multiple times. The following code illustrates the problem.
{code:java}
File archive = new File("CC0 Images.7z");
char[] password = "password".toCharArray();
try (SevenZFile f = new SevenZFile(archive, password))
{
SevenZArchiveEntry entry = StreamSupport.stream(f.getEntries().spliterator(), false)
.filter(e -> !"alberta-amazing-attraction-banff-417074.jpg".equals(e.getName()))
.findFirst().orElseGet(null);
assert entry != null;
for (int i = 0; i < 100; i++)
{
InputStream is = f.getInputStream(entry);
BufferedImage img = ImageIO.read(is);
assert img != null;
System.out.println("Succeeded " + (i + 1) + " times");
}
}{code}
Below is the output I receive on version 1.20
{code:java}
Succeeded 1 times
Succeeded 2 times
Exception in thread "main" java.io.IOException: Checksum verification failed
at org.apache.commons.compress.utils.ChecksumVerifyingInputStream.read(ChecksumVerifyingInputStream.java:61)
at org.apache.commons.compress.utils.ChecksumVerifyingInputStream.skip(ChecksumVerifyingInputStream.java:102)
at org.apache.commons.compress.utils.IOUtils.skip(IOUtils.java:113)
at org.apache.commons.compress.archivers.sevenz.SevenZFile.getCurrentStream(SevenZFile.java:1318)
at org.apache.commons.compress.archivers.sevenz.SevenZFile.getInputStream(SevenZFile.java:1354)
at org.abitoff.dmav.Test.main(Test.java:11)
{code}
was:
{code:java}
File archive = new File("CC0 Images.7z");
char[] password = "password".toCharArray();
try (SevenZFile f = new SevenZFile(archive, password))
{
SevenZArchiveEntry entry = StreamSupport.stream(f.getEntries().spliterator(), false)
.filter(e -> !"alberta-amazing-attraction-banff-417074.jpg".equals(e.getName()))
.findFirst().orElseGet(null);
assert entry != null;
for (int i = 0; i < 100; i++)
{
InputStream is = f.getInputStream(entry);
BufferedImage img = ImageIO.read(is);
assert img != null;
System.out.println("Succeeded " + (i + 1) + " times");
}
}{code}
> Multiple Reads of One SevenZArchiveEntry Fails
> ----------------------------------------------
>
> Key: COMPRESS-505
> URL: https://issues.apache.org/jira/browse/COMPRESS-505
> Project: Commons Compress
> Issue Type: Bug
> Affects Versions: 1.20
> Reporter: Steven Fontaine
> Priority: Minor
>
> I've run into a bug which occurs when attempting to read the same SevenZArchiveEntry stream multiple times. The following code illustrates the problem.
> {code:java}
> File archive = new File("CC0 Images.7z");
> char[] password = "password".toCharArray();
> try (SevenZFile f = new SevenZFile(archive, password))
> {
> SevenZArchiveEntry entry = StreamSupport.stream(f.getEntries().spliterator(), false)
> .filter(e -> !"alberta-amazing-attraction-banff-417074.jpg".equals(e.getName()))
> .findFirst().orElseGet(null);
> assert entry != null;
> for (int i = 0; i < 100; i++)
> {
> InputStream is = f.getInputStream(entry);
> BufferedImage img = ImageIO.read(is);
> assert img != null;
> System.out.println("Succeeded " + (i + 1) + " times");
> }
> }{code}
> Below is the output I receive on version 1.20
> {code:java}
> Succeeded 1 times
> Succeeded 2 times
> Exception in thread "main" java.io.IOException: Checksum verification failed
> at org.apache.commons.compress.utils.ChecksumVerifyingInputStream.read(ChecksumVerifyingInputStream.java:61)
> at org.apache.commons.compress.utils.ChecksumVerifyingInputStream.skip(ChecksumVerifyingInputStream.java:102)
> at org.apache.commons.compress.utils.IOUtils.skip(IOUtils.java:113)
> at org.apache.commons.compress.archivers.sevenz.SevenZFile.getCurrentStream(SevenZFile.java:1318)
> at org.apache.commons.compress.archivers.sevenz.SevenZFile.getInputStream(SevenZFile.java:1354)
> at org.abitoff.dmav.Test.main(Test.java:11)
> {code}
>
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)