ensure FileNameMapper implementations deal with null source names
authorStefan Bodewig <bodewig@apache.org>
Fri, 9 Feb 2018 17:37:58 +0000 (18:37 +0100)
committerStefan Bodewig <bodewig@apache.org>
Fri, 9 Feb 2018 17:37:58 +0000 (18:37 +0100)
https://bz.apache.org/bugzilla/show_bug.cgi?id=62076

src/main/org/apache/tools/ant/types/mappers/CutDirsMapper.java
src/main/org/apache/tools/ant/types/mappers/FilterMapper.java
src/main/org/apache/tools/ant/util/FlatFileNameMapper.java
src/main/org/apache/tools/ant/util/GlobPatternMapper.java
src/main/org/apache/tools/ant/util/RegexpPatternMapper.java

index ce8f39c..932f3ec 100644 (file)
@@ -63,6 +63,9 @@ public class CutDirsMapper implements FileNameMapper {
             throw new BuildException("dirs must be set to a positive number");
         }
         final char fileSep = File.separatorChar;
+        if (sourceFileName == null) {
+            return null;
+        }
         final String fileSepCorrected =
             sourceFileName.replace('/', fileSep).replace('\\', fileSep);
         int nthMatch = fileSepCorrected.indexOf(fileSep);
index 501da50..9ef922e 100644 (file)
@@ -63,6 +63,9 @@ public class FilterMapper extends FilterChain implements FileNameMapper {
      *          the filterchain returns an empty string.
      */
     public String[] mapFileName(String sourceFileName) {
+        if (sourceFileName == null) {
+            return null;
+        }
         try {
             Reader stringReader = new StringReader(sourceFileName);
             ChainReaderHelper helper = new ChainReaderHelper();
index 420ccc6..04d58be 100644 (file)
@@ -49,6 +49,7 @@ public class FlatFileNameMapper implements FileNameMapper {
      * @return the file name in a one-element array.
      */
     public String[] mapFileName(String sourceFileName) {
-        return new String[] {new java.io.File(sourceFileName).getName()};
+        return sourceFileName == null ? null
+            : new String[] {new java.io.File(sourceFileName).getName()};
     }
 }
index ebba54e..a0f0ca9 100644 (file)
@@ -154,6 +154,9 @@ public class GlobPatternMapper implements FileNameMapper {
      * @return a list of converted filenames
      */
     public String[] mapFileName(String sourceFileName) {
+        if (sourceFileName == null) {
+            return null;
+        }
         String modName = modifyName(sourceFileName);
         if (fromPrefix == null
             || (sourceFileName.length() < (prefixLength + postfixLength))
index fa620d9..6a2f4b5 100644 (file)
@@ -114,6 +114,9 @@ public class RegexpPatternMapper implements FileNameMapper {
      *         null if the to pattern did not match
      */
     public String[] mapFileName(String sourceFileName) {
+        if (sourceFileName == null) {
+            return null;
+        }
         if (handleDirSep) {
             if (sourceFileName.indexOf("\\") != -1) {
                 sourceFileName = sourceFileName.replace('\\', '/');