Repository: commons-compress
Updated Branches:
  refs/heads/master 75ba40cd9 -> c59fc43c5


COMPRESS-379 fix symlink logic


Project: http://git-wip-us.apache.org/repos/asf/commons-compress/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-compress/commit/c59fc43c
Tree: http://git-wip-us.apache.org/repos/asf/commons-compress/tree/c59fc43c
Diff: http://git-wip-us.apache.org/repos/asf/commons-compress/diff/c59fc43c

Branch: refs/heads/master
Commit: c59fc43c527610ae18d7596eb191817ce674cb29
Parents: 75ba40c
Author: Stefan Bodewig <[email protected]>
Authored: Sun Jan 15 22:07:19 2017 +0100
Committer: Stefan Bodewig <[email protected]>
Committed: Sun Jan 15 22:07:19 2017 +0100

----------------------------------------------------------------------
 src/changes/changes.xml                              |   5 +++++
 .../commons/compress/archivers/zip/UnixStat.java     |   5 +++++
 .../compress/archivers/zip/ZipArchiveEntry.java      |   2 +-
 .../compress/archivers/zip/ZipArchiveEntryTest.java  |  12 ++++++++++++
 src/test/resources/COMPRESS-379.jar                  | Bin 0 -> 222 bytes
 5 files changed, 23 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-compress/blob/c59fc43c/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 6b55698..5ec0569 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -56,6 +56,11 @@ The <action> type attribute can be add,update,fix,remove.
         configured as some IWA files seem to be using blocks larger
         than the default 32k.
       </action>
+      <action issue="COMPRESS-379" type="fix" date="2017-01-15"
+              due-to="Guillaume Boué">
+        ZipArchiveEntry#isUnixSymlink now only returns true if the
+        corresponding link flag is the only file-type flag set.
+      </action>
     </release>
     <release version="1.13" date="2016-12-29"
              description="Release 1.13 - API compatible to 1.12 but requires 
Java 7 at runtime.">

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/c59fc43c/src/main/java/org/apache/commons/compress/archivers/zip/UnixStat.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/commons/compress/archivers/zip/UnixStat.java 
b/src/main/java/org/apache/commons/compress/archivers/zip/UnixStat.java
index b8afc6b..a1b20be 100644
--- a/src/main/java/org/apache/commons/compress/archivers/zip/UnixStat.java
+++ b/src/main/java/org/apache/commons/compress/archivers/zip/UnixStat.java
@@ -29,6 +29,11 @@ public interface UnixStat {
      */
     int PERM_MASK = 07777;
     /**
+     * Bits used to indicate the filesystem object type.
+     * @since 1.14
+     */
+    int FILE_TYPE_FLAG = 0170000;
+    /**
      * Indicates symbolic links.
      */
     int LINK_FLAG = 0120000;

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/c59fc43c/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntry.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntry.java 
b/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntry.java
index 5030da5..2abd22b 100644
--- 
a/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntry.java
+++ 
b/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntry.java
@@ -294,7 +294,7 @@ public class ZipArchiveEntry extends java.util.zip.ZipEntry
      * @return true if the entry represents a unix symlink, false otherwise.
      */
     public boolean isUnixSymlink() {
-        return (getUnixMode() & UnixStat.LINK_FLAG) == UnixStat.LINK_FLAG;
+        return (getUnixMode() & UnixStat.FILE_TYPE_FLAG) == UnixStat.LINK_FLAG;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/c59fc43c/src/test/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntryTest.java
----------------------------------------------------------------------
diff --git 
a/src/test/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntryTest.java
 
b/src/test/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntryTest.java
index 320b2ff..be003df 100644
--- 
a/src/test/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntryTest.java
+++ 
b/src/test/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntryTest.java
@@ -18,6 +18,7 @@
 
 package org.apache.commons.compress.archivers.zip;
 
+import static org.apache.commons.compress.AbstractTestCase.getFile;
 import static org.junit.Assert.*;
 
 import java.io.ByteArrayOutputStream;
@@ -268,4 +269,15 @@ public class ZipArchiveEntryTest {
         final ZipArchiveEntry copy = new ZipArchiveEntry(archiveEntry);
         assertEquals(archiveEntry, copy);
     }
+
+    /**
+     * @see "https://issues.apache.org/jira/browse/COMPRESS-379";
+     */
+    @Test
+    public void isUnixSymlinkIsFalseIfMoreThanOneFlagIsSet() throws Exception {
+        try (ZipFile zf = new ZipFile(getFile("COMPRESS-379.jar"))) {
+            ZipArchiveEntry ze = zf.getEntry("META-INF/maven/");
+            assertFalse(ze.isUnixSymlink());
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/c59fc43c/src/test/resources/COMPRESS-379.jar
----------------------------------------------------------------------
diff --git a/src/test/resources/COMPRESS-379.jar 
b/src/test/resources/COMPRESS-379.jar
new file mode 100644
index 0000000..8211f32
Binary files /dev/null and b/src/test/resources/COMPRESS-379.jar differ

Reply via email to