You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by pe...@apache.org on 2020/11/13 14:02:43 UTC
[commons-compress] branch master updated: COMPRESS-558: Fix
accidentally added / to file names
This is an automated email from the ASF dual-hosted git repository.
peterlee pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-compress.git
The following commit(s) were added to refs/heads/master by this push:
new 4f52e4a COMPRESS-558: Fix accidentally added / to file names
4f52e4a is described below
commit 4f52e4a712ec47bd8360fee5e14dc591ed27ba85
Author: theobisproject <th...@gmail.com>
AuthorDate: Fri Nov 13 10:23:13 2020 +0100
COMPRESS-558: Fix accidentally added / to file names
---
.../archivers/tar/TarArchiveInputStream.java | 6 ++---
.../archivers/tar/TarArchiveInputStreamTest.java | 26 ++++++++++++++++++++++
2 files changed, 29 insertions(+), 3 deletions(-)
diff --git a/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java b/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java
index 1f532b7..cdaf692 100644
--- a/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java
+++ b/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java
@@ -409,11 +409,11 @@ public class TarArchiveInputStream extends ArchiveInputStream {
}
// COMPRESS-509 : the name of directories should end with '/'
- String name = zipEncoding.decode(longNameData);
+ final String name = zipEncoding.decode(longNameData);
+ currEntry.setName(name);
if (currEntry.isDirectory() && !name.endsWith("/")) {
- name += "/";
+ currEntry.setName(name + "/");
}
- currEntry.setName(name);
}
if (currEntry.isGlobalPaxHeader()){ // Process Global Pax headers
diff --git a/src/test/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStreamTest.java b/src/test/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStreamTest.java
index 31e6f1b..2103394 100644
--- a/src/test/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStreamTest.java
+++ b/src/test/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStreamTest.java
@@ -478,6 +478,32 @@ public class TarArchiveInputStreamTest extends AbstractTestCase {
}
}
+ @Test
+ public void testCompress558() throws IOException {
+ final String folderName = "apache-activemq-5.16.0/examples/openwire/advanced-scenarios/jms-example-exclusive-consumer/src/main/";
+ final String consumerJavaName = "apache-activemq-5.16.0/examples/openwire/advanced-scenarios/jms-example-exclusive-consumer/src/main/java/example/queue/exclusive/Consumer.java";
+ final String producerJavaName = "apache-activemq-5.16.0/examples/openwire/advanced-scenarios/jms-example-exclusive-consumer/src/main/java/example/queue/exclusive/Producer.java";
+
+ final ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ try (final TarArchiveOutputStream tos = new TarArchiveOutputStream(bos)) {
+ tos.setLongFileMode(TarArchiveOutputStream.LONGFILE_GNU);
+ TarArchiveEntry rootfolder = new TarArchiveEntry(folderName);
+ tos.putArchiveEntry(rootfolder);
+ TarArchiveEntry consumerJava = new TarArchiveEntry(consumerJavaName);
+ tos.putArchiveEntry(consumerJava);
+ TarArchiveEntry producerJava = new TarArchiveEntry(producerJavaName);
+ tos.putArchiveEntry(producerJava);
+ tos.closeArchiveEntry();
+ }
+ final byte[] data = bos.toByteArray();
+ try (final ByteArrayInputStream bis = new ByteArrayInputStream(data);
+ final TarArchiveInputStream tis = new TarArchiveInputStream(bis)) {
+ assertEquals(folderName, tis.getNextTarEntry().getName());
+ assertEquals(consumerJavaName, tis.getNextTarEntry().getName());
+ assertEquals(producerJavaName, tis.getNextTarEntry().getName());
+ }
+ }
+
private TarArchiveInputStream getTestStream(final String name) {
return new TarArchiveInputStream(
TarArchiveInputStreamTest.class.getResourceAsStream(name));