You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by pe...@apache.org on 2008/03/23 00:05:38 UTC

svn commit: r640118 - in /ant/core/trunk: WHATSNEW src/main/org/apache/tools/ant/taskdefs/ManifestClassPath.java

Author: peterreilly
Date: Sat Mar 22 16:05:37 2008
New Revision: 640118

URL: http://svn.apache.org/viewvc?rev=640118&view=rev
Log:
fix for 43799: ManifestClassPath cannot traverse system root

Modified:
    ant/core/trunk/WHATSNEW
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/ManifestClassPath.java

Modified: ant/core/trunk/WHATSNEW
URL: http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?rev=640118&r1=640117&r2=640118&view=diff
==============================================================================
--- ant/core/trunk/WHATSNEW (original)
+++ ant/core/trunk/WHATSNEW Sat Mar 22 16:05:37 2008
@@ -52,6 +52,9 @@
 
  * <touch> task couldn't differentiate between "no resources specified" and "no resources
    matched."  Bugzilla report 43799.
+
+ * ManifestClassPath throws when a relative path would traverse the file system root. Bugzilla
+   report 44499.
    
 Other changes:
 --------------

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/ManifestClassPath.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/ManifestClassPath.java?rev=640118&r1=640117&r2=640118&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/ManifestClassPath.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/ManifestClassPath.java Sat Mar 22 16:05:37 2008
@@ -75,7 +75,10 @@
         File currDir = dir;
         String[] dirs = new String[maxParentLevels + 1];
         for (int i = 0; i < maxParentLevels + 1; ++i) {
-            dirs[i] = currDir.getAbsolutePath() + File.separatorChar;
+            dirs[i] = currDir.getAbsolutePath();
+            if (!dirs[i].equals("" + File.separatorChar)) {
+                dirs[i] = dirs[i] + File.separatorChar;
+            }
             currDir = currDir.getParentFile();
             if (currDir == null) {
                 maxParentLevels = i + 1;
@@ -95,7 +98,7 @@
             // Find the longest prefix shared by the current file
             // and the reference directory.
             String relPath = null;
-            for (int j = 0; j <= maxParentLevels; ++j) {
+            for (int j = 0; j <= maxParentLevels && j < dirs.length; ++j) {
                 String dir = dirs[j];
                 if (!fullPath.startsWith(dir)) {
                     continue;