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