]> source.dussan.org Git - poi.git/commitdiff
[bug-65738] do not treat zip directories as parts
authorPJ Fanning <fanningpj@apache.org>
Fri, 10 Dec 2021 18:07:25 +0000 (18:07 +0000)
committerPJ Fanning <fanningpj@apache.org>
Fri, 10 Dec 2021 18:07:25 +0000 (18:07 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1895788 13f79535-47bb-0310-9956-ffa450edef68

poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/ZipPackage.java

index 45c1f282e6c95677bc7c7f71afe8e06f6dacd81b..8feaf8125293a07e6d9ee642e4687c37d7a67511 100644 (file)
@@ -308,6 +308,7 @@ public final class ZipPackage extends OPCPackage {
         //  its relationship exists, and then it won't tie up)
         final List<EntryTriple> entries =
                 Collections.list(zipArchive.getEntries()).stream()
+                        .filter(zipArchiveEntry -> !ignoreEntry(zipArchiveEntry))
                         .map(zae -> new EntryTriple(zae, contentTypeManager))
                         .filter(mm -> mm.partName != null)
                         .sorted()
@@ -320,6 +321,11 @@ public final class ZipPackage extends OPCPackage {
         return newPartList;
     }
 
+    private static boolean ignoreEntry(ZipArchiveEntry zipArchiveEntry) {
+        String name = zipArchiveEntry.getName();
+        return name.startsWith("[trash]") || name.endsWith("/");
+    }
+
     private class EntryTriple implements Comparable<EntryTriple> {
         final ZipArchiveEntry zipArchiveEntry;
         final PackagePartName partName;
@@ -331,7 +337,7 @@ public final class ZipPackage extends OPCPackage {
             final String entryName = zipArchiveEntry.getName();
             PackagePartName ppn = null;
             // ignore trash parts
-            if (!entryName.startsWith("[trash]")) {
+            if (!ignoreEntry(zipArchiveEntry)) {
                 try {
                     // We get an error when we parse [Content_Types].xml
                     // because it's not a valid URI.