You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2022/12/04 21:06:09 UTC

[commons-vfs] branch master updated: VFS-825 Fix for GZip input and output stream results in StackOverflowError (#322)

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 <an...@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>