ant-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From xav...@apache.org
Subject svn commit: r632310 - in /ant/ivy/core/trunk: ./ src/java/org/apache/ivy/core/cache/ src/java/org/apache/ivy/core/settings/ test/java/org/apache/ivy/ant/ test/repositories/
Date Fri, 29 Feb 2008 13:05:35 GMT
Author: xavier
Date: Fri Feb 29 05:05:33 2008
New Revision: 632310

URL: http://svn.apache.org/viewvc?rev=632310&view=rev
Log:
FIX: Cachefileset task silently fails with parent dir ".." construct (IVY-638)

Added:
    ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/CacheUtil.java   (with props)
    ant/ivy/core/trunk/test/repositories/ivysettings-invalidcachepattern.xml   (with props)
Modified:
    ant/ivy/core/trunk/CHANGES.txt
    ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java
    ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/IvySettings.java
    ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyCacheFilesetTest.java

Modified: ant/ivy/core/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/CHANGES.txt?rev=632310&r1=632309&r2=632310&view=diff
==============================================================================
--- ant/ivy/core/trunk/CHANGES.txt (original)
+++ ant/ivy/core/trunk/CHANGES.txt Fri Feb 29 05:05:33 2008
@@ -66,6 +66,7 @@
 =====================================
 - FIX: PublishEventsTest fails when Ivy sources are located in a directory with a + (IVY-755)
 - FIX: XML entity parsing does not work properly (IVY-737) (thanks to Patrick Woodworth)
+- FIX: Cachefileset task silently fails with parent dir ".." construct (IVY-638)
 
    2.0.0-beta2
 =====================================

Added: ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/CacheUtil.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/CacheUtil.java?rev=632310&view=auto
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/CacheUtil.java (added)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/CacheUtil.java Fri Feb 29 05:05:33
2008
@@ -0,0 +1,50 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.ivy.core.cache;
+
+/**
+ * Utility class providing some cache related facilities. 
+ *
+ */
+public final class CacheUtil {
+
+    /**
+     * Checks that the given pattern is acceptable as a cache pattern
+     * 
+     * @param cachePattern
+     *            the pattern to check
+     * @throws IllegalArgumentException
+     *             if the pattern isn't acceptable as cache pattern
+     */
+    public static void checkCachePattern(String cachePattern) {
+        if (cachePattern == null) {
+            throw new IllegalArgumentException("null cache pattern not allowed.");
+        }
+        if (cachePattern.startsWith("..")) {
+            throw new IllegalArgumentException("invalid cache pattern: '" + cachePattern

+                + "': cache patterns must not lead outside cache directory");
+        }
+        if (cachePattern.startsWith("/")) {
+            throw new IllegalArgumentException("invalid cache pattern: '" + cachePattern

+                + "': cache patterns must not be absolute");
+        }
+    }
+
+    private CacheUtil() {
+    }
+}

Propchange: ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/CacheUtil.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java?rev=632310&r1=632309&r2=632310&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java
(original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java
Fri Feb 29 05:05:33 2008
@@ -144,6 +144,7 @@
     }
 
     public void setArtifactPattern(String artifactPattern) {
+        CacheUtil.checkCachePattern(artifactPattern);
         this.artifactPattern = artifactPattern;
     }
 
@@ -178,10 +179,12 @@
     }
 
     public void setDataFilePattern(String dataFilePattern) {
+        CacheUtil.checkCachePattern(dataFilePattern);
         this.dataFilePattern = dataFilePattern;
     }
 
     public void setIvyPattern(String ivyPattern) {
+        CacheUtil.checkCachePattern(ivyPattern);
         this.ivyPattern = ivyPattern;
     }
 

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/IvySettings.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/IvySettings.java?rev=632310&r1=632309&r2=632310&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/IvySettings.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/IvySettings.java Fri Feb 29 05:05:33
2008
@@ -39,6 +39,7 @@
 import org.apache.ivy.core.IvyPatternHelper;
 import org.apache.ivy.core.NormalRelativeUrlResolver;
 import org.apache.ivy.core.RelativeUrlResolver;
+import org.apache.ivy.core.cache.CacheUtil;
 import org.apache.ivy.core.cache.DefaultRepositoryCacheManager;
 import org.apache.ivy.core.cache.DefaultResolutionCacheManager;
 import org.apache.ivy.core.cache.RepositoryCacheManager;
@@ -1278,6 +1279,7 @@
     }
 
     public void setDefaultCacheIvyPattern(String defaultCacheIvyPattern) {
+        CacheUtil.checkCachePattern(defaultCacheIvyPattern);
         this.defaultCacheIvyPattern = defaultCacheIvyPattern;
     }
     
@@ -1286,6 +1288,7 @@
     }
 
     public void setDefaultCacheArtifactPattern(String defaultCacheArtifactPattern) {
+        CacheUtil.checkCachePattern(defaultCacheIvyPattern);
         this.defaultCacheArtifactPattern = defaultCacheArtifactPattern;
     }
     

Modified: ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyCacheFilesetTest.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyCacheFilesetTest.java?rev=632310&r1=632309&r2=632310&view=diff
==============================================================================
--- ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyCacheFilesetTest.java (original)
+++ ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyCacheFilesetTest.java Fri Feb 29 05:05:33
2008
@@ -112,6 +112,19 @@
         }
     }
 
+    public void testInvalidPattern() throws Exception {
+        try {
+            project.setProperty("ivy.settings.file", 
+                "test/repositories/ivysettings-invalidcachepattern.xml");
+            project.setProperty("ivy.dep.file", "test/java/org/apache/ivy/ant/ivy-simple.xml");
+            fileset.setSetid("simple-setid");
+            fileset.execute();
+            fail("failure didn't raised an exception with default haltonfailure setting");
+        } catch (BuildException ex) {
+            // ok => should raise an exception
+        }
+    }
+
     public void testHaltOnFailure() throws Exception {
         try {
             project.setProperty("ivy.dep.file", "test/java/org/apache/ivy/ant/ivy-failure.xml");

Added: ant/ivy/core/trunk/test/repositories/ivysettings-invalidcachepattern.xml
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/repositories/ivysettings-invalidcachepattern.xml?rev=632310&view=auto
==============================================================================
--- ant/ivy/core/trunk/test/repositories/ivysettings-invalidcachepattern.xml (added)
+++ ant/ivy/core/trunk/test/repositories/ivysettings-invalidcachepattern.xml Fri Feb 29 05:05:33
2008
@@ -0,0 +1,46 @@
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.    
+-->
+<ivysettings>
+	<properties file="${ivy.settings.dir}/ivysettings.properties" />
+	<settings defaultResolver="test"/>
+	<caches defaultCacheDir="${cache.dir}"  
+	        ivyPattern="../[module]/ivy-[revision].xml">
+	</caches>
+	<resolvers>
+		<chain name="test">
+			<filesystem name="1">
+				<ivy pattern="${ivy.settings.dir}/1/[organisation]/[module]/ivys/ivy-[revision].xml"/>
+				<artifact pattern="${ivy.settings.dir}/1/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]"/>
+			</filesystem>
+			<dual name="2">
+				<filesystem name="2-ivy">
+					<ivy pattern="${ivy.settings.dir}/2/[module]/ivy-[revision].xml"/>
+				</filesystem>
+				<filesystem name="2-artifact">
+					<artifact pattern="${ivy.settings.dir}/2/[module]/[artifact]-[revision].[ext]"/>
+					<artifact pattern="${ivy.settings.dir}/2/[module]/[artifact].[ext]"/>
+				</filesystem>
+			</dual>
+		</chain>
+		<filesystem name="install">
+			<ivy pattern="build/test/install/[organisation]/[module]/[artifact]-[revision].[ext]"/>
+			<artifact pattern="build/test/install/[organisation]/[module]/[artifact]-[revision].[ext]"/>
+		</filesystem>
+	</resolvers>
+</ivysettings>

Propchange: ant/ivy/core/trunk/test/repositories/ivysettings-invalidcachepattern.xml
------------------------------------------------------------------------------
    svn:mime-type = text/plain



Mime
View raw message