Browse Source

Merge 1.9.x branch into master

master
Jaikiran Pai 6 years ago
parent
commit
6c860479a1
7 changed files with 55 additions and 1 deletions
  1. +1
    -0
      CONTRIBUTORS
  2. +5
    -0
      WHATSNEW
  3. +4
    -0
      contributors.xml
  4. +5
    -0
      src/etc/testcases/core/directoryscanner.xml
  5. +12
    -0
      src/main/org/apache/tools/ant/DirectoryScanner.java
  6. +14
    -1
      src/main/org/apache/tools/ant/taskdefs/Delete.java
  7. +14
    -0
      src/tests/junit/org/apache/tools/ant/DirectoryScannerTest.java

+ 1
- 0
CONTRIBUTORS View File

@@ -278,6 +278,7 @@ Matthew Warman
Matthew Watson
Matthew Yanos
Matthias Bhend
Michael Barker
Michael Bayne
Michael Clarke
Michael Davey


+ 5
- 0
WHATSNEW View File

@@ -27,6 +27,11 @@ Fixed bugs:
an incorrect compression level for a zip entry. This is now fixed.
Bugzilla Report 62686

* A filesystem "loop" caused due to symbolic links could trigger an
out of memory error in the org.apache.tools.ant.DirectoryScanner
This has now been fixed.
Bugzilla Report 62849

Other changes:
--------------
* generatekey task now supports SubjectAlternativeName during key


+ 4
- 0
contributors.xml View File

@@ -1155,6 +1155,10 @@
<first>Matthias</first>
<last>Bhend</last>
</name>
<name>
<first>Michael</first>
<last>Barker</last>
</name>
<name>
<first>Michael</first>
<last>Bayne</last>


+ 5
- 0
src/etc/testcases/core/directoryscanner.xml View File

@@ -38,4 +38,9 @@
<touch file="${output}/alpha/beta/gamma/gamma.xml"/>
</target>

<target name="symlink-nested-setup" depends="setUp">
<symlink link="${output}/alpha/beta/gamma/beta-link" resource="${output}/alpha/beta"/>
<touch file="${output}/alpha/beta/gamma/gamma.xml"/>
</target>

</project>

+ 12
- 0
src/main/org/apache/tools/ant/DirectoryScanner.java View File

@@ -1237,6 +1237,18 @@ public class DirectoryScanner
final String name = vpath + newFile;
final TokenizedPath newPath = new TokenizedPath(path, newFile);
final File file = new File(dir, newFile);

try {
// check if it's a filesystem "loop" due to symbolic links
if (FileUtils.getFileUtils().isLeadingPath(file.getAbsoluteFile(),
dir.getAbsoluteFile(), true)) {
continue;
}
} catch (IOException e) {
System.err.println("Failed to determine if " + file + " causes a " +
"filesystem loop due to symbolic link; continuing");
}

final String[] children = file.list();
if (children == null || (children.length == 0 && file.isFile())) {
if (isIncluded(newPath)) {


+ 14
- 1
src/main/org/apache/tools/ant/taskdefs/Delete.java View File

@@ -18,6 +18,7 @@

package org.apache.tools.ant.taskdefs;

import java.io.IOException;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -814,7 +815,19 @@ public class Delete extends MatchingTask {
}
for (String s : list) {
File f = new File(d, s);
if (f.isDirectory()) {

boolean isFsLoop = false;

try {
isFsLoop = Files.isSymbolicLink(f.toPath()) &&
FileUtils.getFileUtils().isLeadingPath(f.getAbsoluteFile(),
d.getAbsoluteFile(), true);
} catch (IOException e) {
log("Failed to check if " + f + " causes a filesystem loop due to " +
"symbolic link; continuing");
}

if (f.isDirectory() && !isFsLoop) {
removeDir(f);
} else {
log("Deleting " + f.getAbsolutePath(), quiet ? Project.MSG_VERBOSE : verbosity);


+ 14
- 0
src/tests/junit/org/apache/tools/ant/DirectoryScannerTest.java View File

@@ -130,6 +130,20 @@ public class DirectoryScannerTest {
new String[] {"alpha/beta/gamma"});
}

@Test
public void testAllowRecursiveSymlinks() {

assumeTrue("Current system does not support Symlinks", supportsSymlinks);

buildRule.getProject().executeTarget("symlink-nested-setup");
DirectoryScanner ds = new DirectoryScanner();
ds.setBasedir(new File(buildRule.getProject().getProperty("output")));
ds.setIncludes(new String[] {"alpha/beta/gamma/"});
ds.scan();
compareFiles(ds, new String[] {"alpha/beta/gamma/gamma.xml"},
new String[] {"alpha/beta/gamma"});
}

@Test
public void testProhibitSymlinks() {
assumeTrue("Current system does not support Symlinks", supportsSymlinks);


Loading…
Cancel
Save