Repository: commons-compress Updated Branches: refs/heads/master d85561d90 -> 1930eed89
COMPRESS-324 be more lenient when detecting GNU tar extensions Project: http://git-wip-us.apache.org/repos/asf/commons-compress/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-compress/commit/1930eed8 Tree: http://git-wip-us.apache.org/repos/asf/commons-compress/tree/1930eed8 Diff: http://git-wip-us.apache.org/repos/asf/commons-compress/diff/1930eed8 Branch: refs/heads/master Commit: 1930eed89459d1ea726762e362143a5aa2ccaeb4 Parents: d85561d Author: Stefan Bodewig <[email protected]> Authored: Tue Oct 6 05:37:28 2015 +0200 Committer: Stefan Bodewig <[email protected]> Committed: Tue Oct 6 05:37:28 2015 +0200 ---------------------------------------------------------------------- src/changes/changes.xml | 5 +++++ .../compress/archivers/tar/TarArchiveEntry.java | 6 ++---- .../archivers/tar/TarArchiveInputStreamTest.java | 18 ++++++++++++++++++ src/test/resources/COMPRESS-324.tar | Bin 0 -> 10240 bytes 4 files changed, 25 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-compress/blob/1930eed8/src/changes/changes.xml ---------------------------------------------------------------------- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 18c6cf8..b6adccf 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -44,6 +44,11 @@ The <action> type attribute can be add,update,fix,remove. <body> <release version="1.11" date="not released, yet" description="Release 1.11"> + <action issue="COMPRESS-324" type="fix" date="2015-10-06"> + TarArchiveOutputStream will now recognize GNU long name and + link entries even if the special entry has a different name + than GNU tar uses itself. + </action> <action issue="COMPRESS-321" type="fix" date="2015-08-22"> ArrayIndexOutOfBoundsException when InfoZIP type 7875 extra fields are read from the central directory. http://git-wip-us.apache.org/repos/asf/commons-compress/blob/1930eed8/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveEntry.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveEntry.java b/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveEntry.java index cdbc80f..96bb3ee 100644 --- a/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveEntry.java +++ b/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveEntry.java @@ -728,8 +728,7 @@ public class TarArchiveEntry implements TarConstants, ArchiveEntry { * @return true if this is a long name extension provided by GNU tar */ public boolean isGNULongLinkEntry() { - return linkFlag == LF_GNUTYPE_LONGLINK - && name.equals(GNU_LONGLINK); + return linkFlag == LF_GNUTYPE_LONGLINK; } /** @@ -738,8 +737,7 @@ public class TarArchiveEntry implements TarConstants, ArchiveEntry { * @return true if this is a long name extension provided by GNU tar */ public boolean isGNULongNameEntry() { - return linkFlag == LF_GNUTYPE_LONGNAME - && name.equals(GNU_LONGLINK); + return linkFlag == LF_GNUTYPE_LONGNAME; } /** http://git-wip-us.apache.org/repos/asf/commons-compress/blob/1930eed8/src/test/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStreamTest.java ---------------------------------------------------------------------- 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 ca53b8b..862e02b 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 @@ -256,6 +256,24 @@ public class TarArchiveInputStreamTest { tis.close(); } + /** + * @link "https://issues.apache.org/jira/browse/COMPRESS-324" + */ + @Test + public void shouldReadGNULongNameEntryWithWrongName() throws Exception { + TarArchiveInputStream is = getTestStream("/COMPRESS-324.tar"); + try { + TarArchiveEntry entry = is.getNextTarEntry(); + assertEquals("1234567890123456789012345678901234567890123456789012345678901234567890" + + "1234567890123456789012345678901234567890123456789012345678901234567890" + + "1234567890123456789012345678901234567890123456789012345678901234567890" + + "1234567890123456789012345678901234567890.txt", + entry.getName()); + } finally { + is.close(); + } + } + private TarArchiveInputStream getTestStream(String name) { return new TarArchiveInputStream( TarArchiveInputStreamTest.class.getResourceAsStream(name)); http://git-wip-us.apache.org/repos/asf/commons-compress/blob/1930eed8/src/test/resources/COMPRESS-324.tar ---------------------------------------------------------------------- diff --git a/src/test/resources/COMPRESS-324.tar b/src/test/resources/COMPRESS-324.tar new file mode 100644 index 0000000..902fcca Binary files /dev/null and b/src/test/resources/COMPRESS-324.tar differ
