You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cs...@apache.org on 2021/01/25 12:01:21 UTC

[sling-org-apache-sling-distribution-core] branch SLING-10088 created (now c061c62)

This is an automated email from the ASF dual-hosted git repository.

cschneider pushed a change to branch SLING-10088
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-distribution-core.git.


      at c061c62  SLING-10088 - Correctly escape paths

This branch includes the following new commits:

     new c061c62  SLING-10088 - Correctly escape paths

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[sling-org-apache-sling-distribution-core] 01/01: SLING-10088 - Correctly escape paths

Posted by cs...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

cschneider pushed a commit to branch SLING-10088
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-distribution-core.git

commit c061c62d92652a85ab641f2613f25187d2fc8928
Author: Christian Schneider <cs...@adobe.com>
AuthorDate: Mon Jan 25 13:00:59 2021 +0100

    SLING-10088 - Correctly escape paths
---
 .../serialization/impl/vlt/VltUtils.java           |  3 ++-
 .../serialization/impl/vlt/VltUtilsTest.java       | 22 ++++++++++++++++++++++
 2 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VltUtils.java b/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VltUtils.java
index 43ac3c6..0586cfc 100644
--- a/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VltUtils.java
+++ b/src/main/java/org/apache/sling/distribution/serialization/impl/vlt/VltUtils.java
@@ -36,6 +36,7 @@ import java.util.NavigableMap;
 import java.util.Properties;
 import java.util.Set;
 import java.util.TreeMap;
+import java.util.regex.Pattern;
 import java.util.zip.Deflater;
 
 import org.apache.commons.io.FileUtils;
@@ -89,7 +90,7 @@ public class VltUtils {
             boolean deep = distributionRequest.isDeep(path);
             PathFilterSet nodeFilterSet = new PathFilterSet(path);
             if (!deep) {
-                nodeFilterSet.addInclude(new DefaultPathFilter(path));
+                nodeFilterSet.addInclude(new DefaultPathFilter(Pattern.quote(path)));
             }
             initFilterSet(nodeFilterSet, nodeFilters, patterns);
 
diff --git a/src/test/java/org/apache/sling/distribution/serialization/impl/vlt/VltUtilsTest.java b/src/test/java/org/apache/sling/distribution/serialization/impl/vlt/VltUtilsTest.java
index 210a80e..4297b85 100644
--- a/src/test/java/org/apache/sling/distribution/serialization/impl/vlt/VltUtilsTest.java
+++ b/src/test/java/org/apache/sling/distribution/serialization/impl/vlt/VltUtilsTest.java
@@ -29,6 +29,7 @@ import org.apache.jackrabbit.vault.fs.api.PathFilterSet;
 import org.apache.jackrabbit.vault.fs.api.WorkspaceFilter;
 import org.apache.sling.distribution.DistributionRequest;
 import org.apache.sling.distribution.SimpleDistributionRequest;
+import org.hamcrest.Matchers;
 import org.junit.Test;
 
 import static org.apache.sling.distribution.DistributionRequestType.*;
@@ -113,4 +114,25 @@ public class VltUtilsTest {
         assertEquals("-.*/foo", filtersForSomePath.get(0));
         assertEquals("-.*/bar", filtersForSomePath.get(1));
     }
+    
+    @Test
+    public void testCreateFilterWithParenthesis() {
+        DistributionRequest request = new SimpleDistributionRequest(ADD, false, "/nodewith(shouldwork");
+        NavigableMap<String, List<String>> nodeFilters = new TreeMap<String, List<String>>();
+        NavigableMap<String, List<String>> propFilters = new TreeMap<String, List<String>>();
+        VltUtils.createFilter(request, nodeFilters, propFilters);
+    }
+    
+    @Test
+    public void testSanitizeWithPolicyNodeIsConvertedToDeepPath() {
+        String pathWithPolicy = "/nodewith(shouldwork/rep:policy";
+        String pathWithoutPolicy = "/nodewith(shouldwork";
+        DistributionRequest request = new SimpleDistributionRequest(ADD, false, pathWithPolicy, pathWithoutPolicy);
+        assertThat(request.isDeep(pathWithPolicy), Matchers.equalTo(false));
+        assertThat(request.isDeep(pathWithoutPolicy), Matchers.equalTo(false));
+        DistributionRequest sanitizedRequest = VltUtils.sanitizeRequest(request);
+        assertThat(sanitizedRequest.isDeep(pathWithPolicy), Matchers.equalTo(true));
+        assertThat(sanitizedRequest.isDeep(pathWithoutPolicy), Matchers.equalTo(false));
+    }
+    
 }
\ No newline at end of file