summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTORS1
-rw-r--r--WHATSNEW3
-rw-r--r--contributors.xml4
-rw-r--r--src/main/org/apache/tools/ant/taskdefs/optional/junitlauncher/LegacyXmlResultFormatter.java14
4 files changed, 20 insertions, 2 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index b174309af..e721b2ffe 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -423,6 +423,7 @@ Takashi Okamoto
TAMURA Kent
Taoufik Romdhane
Tariq Master
+Taylor Smock
Thomas Aglassinger
Thomas Butz
Thomas Christen
diff --git a/WHATSNEW b/WHATSNEW
index 9ea8607fc..dee8ed63c 100644
--- a/WHATSNEW
+++ b/WHATSNEW
@@ -18,6 +18,9 @@ Fixed bugs:
PropertyHelper implementations - for example when using AntXtras.
Bugzilla Report 65799
+* legacy-xml reporter of the junitlauncher task now escapes ]]> when writing CDATA.
+ Bugzilla Report 65833
+
Other changes:
--------------
diff --git a/contributors.xml b/contributors.xml
index 266686349..f0f5197c7 100644
--- a/contributors.xml
+++ b/contributors.xml
@@ -1745,6 +1745,10 @@
<last>Master</last>
</name>
<name>
+ <first>Taylor</first>
+ <last>Smock</last>
+ </name>
+ <name>
<first>Thomas</first>
<last>Aglassinger</last>
</name>
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junitlauncher/LegacyXmlResultFormatter.java b/src/main/org/apache/tools/ant/taskdefs/optional/junitlauncher/LegacyXmlResultFormatter.java
index d86c35b3f..3db122791 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junitlauncher/LegacyXmlResultFormatter.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/junitlauncher/LegacyXmlResultFormatter.java
@@ -299,7 +299,7 @@ class LegacyXmlResultFormatter extends AbstractJUnitResultFormatter implements T
}
writeAttribute(writer, ATTR_TYPE, t.getClass().getName());
// write out the stacktrace
- writer.writeCData(StringUtils.getStackTrace(t));
+ this.writeCDataSafely(writer, StringUtils.getStackTrace(t));
}
writer.writeEndElement();
}
@@ -318,7 +318,7 @@ class LegacyXmlResultFormatter extends AbstractJUnitResultFormatter implements T
}
writeAttribute(writer, ATTR_TYPE, t.getClass().getName());
// write out the stacktrace
- writer.writeCData(StringUtils.getStackTrace(t));
+ this.writeCDataSafely(writer, StringUtils.getStackTrace(t));
}
writer.writeEndElement();
}
@@ -345,6 +345,16 @@ class LegacyXmlResultFormatter extends AbstractJUnitResultFormatter implements T
writer.writeEndElement();
}
+ /**
+ * Write cdata safely (escape special sequence {@code "]]>"})
+ * @param writer The xml writer to use
+ * @param cdata The cdata to write
+ * @see <a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=65833">Bugzilla #65833</a>
+ */
+ private void writeCDataSafely(final XMLStreamWriter writer, final String cdata) throws XMLStreamException {
+ writer.writeCData(cdata.replace("]]>", "]]]]><![CDATA[>"));
+ }
+
private void writeCharactersFrom(final Reader reader, final XMLStreamWriter writer) throws IOException, XMLStreamException {
final char[] chars = new char[1024];
int numRead = -1;