This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-vfs.git
The following commit(s) were added to refs/heads/master by this push: new 1a553bbf VFS-825 Fix for GZip input and output stream results in StackOverflowError (#322) 1a553bbf is described below commit 1a553bbf2793e005b05602f699da0737d6b5e62c Author: Anthony Goubard <anthony.goub...@japplis.com> AuthorDate: Sun Dec 4 22:06:04 2022 +0100 VFS-825 Fix for GZip input and output stream results in StackOverflowError (#322) --- .../apache/commons/vfs2/provider/gzip/GzipFileObject.java | 4 ++-- .../org/apache/commons/vfs2/provider/gzip/GzipTest.java | 14 +++++++++++--- pom.xml | 2 +- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/gzip/GzipFileObject.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/gzip/GzipFileObject.java index 62e85aef..f087a2ce 100644 --- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/gzip/GzipFileObject.java +++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/gzip/GzipFileObject.java @@ -59,11 +59,11 @@ public class GzipFileObject extends CompressedFileFileObject<GzipFileSystem> { @Override protected InputStream doGetInputStream(final int bufferSize) throws Exception { - return new GZIPInputStream(getInputStream(), bufferSize); + return new GZIPInputStream(getContainer().getContent().getInputStream(), bufferSize); } @Override protected OutputStream doGetOutputStream(final boolean bAppend) throws Exception { - return new GZIPOutputStream(getOutputStream(false)); + return new GZIPOutputStream(getContainer().getContent().getOutputStream(false)); } } diff --git a/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/gzip/GzipTest.java b/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/gzip/GzipTest.java index c4a0b399..606557fd 100644 --- a/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/gzip/GzipTest.java +++ b/commons-vfs2/src/test/java/org/apache/commons/vfs2/provider/gzip/GzipTest.java @@ -19,11 +19,12 @@ package org.apache.commons.vfs2.provider.gzip; import java.io.File; import java.io.IOException; +import java.nio.charset.StandardCharsets; import org.apache.commons.vfs2.FileObject; import org.apache.commons.vfs2.FileSystemManager; import org.apache.commons.vfs2.VFS; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; public class GzipTest { @@ -34,8 +35,15 @@ public class GzipTest { final File gzFile = new File("src/test/resources/test-data/好.txt.gz"); FileSystemManager manager = VFS.getManager(); - try (FileObject localFileObject = manager.resolveFile(gzFile.getAbsolutePath()); FileObject gzFileObject = manager.createFileSystem(localFileObject);) { - Assert.assertTrue(gzFileObject instanceof GzipFileObject); + try (FileObject localFileObject = manager.resolveFile(gzFile.getAbsolutePath()); + FileObject gzFileObjectDir = manager.createFileSystem(localFileObject); + FileObject gzFileObject = gzFileObjectDir.resolveFile("好.txt")) { + Assertions.assertTrue(gzFileObjectDir instanceof GzipFileObject); + Assertions.assertTrue(gzFileObjectDir.isFolder()); + Assertions.assertTrue(gzFileObject instanceof GzipFileObject); + Assertions.assertFalse(gzFileObject.isFolder()); + String content = gzFileObject.getContent().getString(StandardCharsets.UTF_8); + Assertions.assertEquals("aaa", content); } } } diff --git a/pom.xml b/pom.xml index 1203ed0a..ecf90462 100644 --- a/pom.xml +++ b/pom.xml @@ -128,7 +128,7 @@ </contributor> <contributor> <name>Anthony Goubard</name> - <email>adagoubard -at- chello.nl</email> + <email>anthony.goubard -at- japplis.com</email> </contributor> <contributor> <name>Christopher Ottley</name>