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>

Reply via email to