Skip to content

Commit 2fcdd2e

Browse files
Merge pull request #994 from HL7/do-20241119-checkstyle-for-xml-new-instances
Automate testing for XMLUtils factory methods
2 parents 0928587 + 87572bc commit 2fcdd2e

File tree

4 files changed

+46
-14
lines changed

4 files changed

+46
-14
lines changed

checkstyle.xml

Lines changed: 43 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,49 @@
1111
<module name="TreeWalker">
1212
<!--
1313
<module name="TodoComment">-->
14-
<!-- The (?i) below means Case Insensitive -->
14+
<!-- The (?i) below means Case Insensitive -->
1515
<!--<property name="format" value="(?i)FIXME"/>
1616
-->
17-
<module name="RegexpSinglelineJava">
18-
<property name="format" value="org\.jetbrains\.annotations\.NotNull"/>
19-
</module>
20-
<module name="RegexpSinglelineJava">
21-
<property name="format" value="org\.jetbrains\.annotations\.Nullable"/>
22-
</module>
23-
<module name="RegexpSinglelineJava">
24-
<property name="format" value="org\.jetbrains\.annotations\.\*"/>
25-
</module>
26-
</module>
17+
<module name="RegexpSinglelineJava">
18+
<property name="format" value="org\.jetbrains\.annotations\.NotNull"/>
19+
</module>
20+
<module name="RegexpSinglelineJava">
21+
<property name="format" value="org\.jetbrains\.annotations\.Nullable"/>
22+
</module>
23+
<module name="RegexpSinglelineJava">
24+
<property name="format" value="org\.jetbrains\.annotations\.\*"/>
25+
</module>
26+
</module>
27+
<module name="RegexpMultiline">
28+
<property name="id" value="transformerFactoryNewInstance"/>
29+
<property name="matchAcrossLines" value="true"/>
30+
<property name="format" value="TransformerFactory\.newInstance\("/>
31+
<property name="message"
32+
value="Usage of TransformerFactory.newInstance() is only allowed in XMLUtil.newXXEProtectedTransformerFactory()."
33+
/>
34+
</module>
35+
<module name="RegexpMultiline">
36+
<property name="id" value="documentBuilderFactoryNewInstance"/>
37+
<property name="matchAcrossLines" value="true"/>
38+
<property name="format" value="DocumentBuilderFactory\.newInstance\("/>
39+
<property name="message"
40+
value="Usage of DocumentBuilderFactory.newInstance() is only allowed in XMLUtil.newXXEProtectedDocumentBuilderFactory()."
41+
/>
42+
</module>
43+
<module name="RegexpMultiline">
44+
<property name="id" value="saxParserFactoryNewInstance"/>
45+
<property name="matchAcrossLines" value="true"/>
46+
<property name="format" value="SAXParserFactory\.newInstance\("/>
47+
<property name="message"
48+
value="Usage of SAXParserFactory.newInstance() is only allowed in XMLUtil.newXXEProtectedSaxParserFactory()."
49+
/>
50+
</module>
51+
<module name="RegexpMultiline">
52+
<property name="id" value="getXMLReader"/>
53+
<property name="matchAcrossLines" value="true"/>
54+
<property name="format" value="\.getXMLReader\("/>
55+
<property name="message"
56+
value="Usage of SAXParserFactory.getXMLReader() is only allowed in XMLUtil.getXXEProtectedXMLReader(...)."
57+
/>
58+
</module>
2759
</module>

org.hl7.fhir.publisher.core/src/main/java/org/hl7/fhir/igtools/publisher/Publisher.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14312,7 +14312,7 @@ private String fetchCurrentIGPubVersion() {
1431214312
private void loadMappingSpaces(byte[] source) throws Exception {
1431314313
ByteArrayInputStream is = null;
1431414314
try {
14315-
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
14315+
DocumentBuilderFactory factory = XMLUtil.newXXEProtectedDocumentBuilderFactory();
1431614316
factory.setNamespaceAware(true);
1431714317
DocumentBuilder builder = factory.newDocumentBuilder();
1431814318
is = new ByteArrayInputStream(source);

org.hl7.fhir.publisher.core/src/main/java/org/hl7/fhir/igtools/publisher/utils/PackageReleaser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -840,7 +840,7 @@ private void check(boolean condition, String message) {
840840

841841
private Document loadXml(File file) throws Exception {
842842
InputStream src = new FileInputStream(file);
843-
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
843+
DocumentBuilderFactory dbf = XMLUtil.newXXEProtectedDocumentBuilderFactory();
844844
DocumentBuilder db = dbf.newDocumentBuilder();
845845
return db.parse(src);
846846
}

org.hl7.fhir.publisher.core/src/main/java/org/hl7/fhir/igtools/publisher/utils/TemplateReleaser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -601,7 +601,7 @@ private void check(boolean condition, String message) {
601601

602602
private Document loadXml(File file) throws Exception {
603603
InputStream src = new FileInputStream(file);
604-
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
604+
DocumentBuilderFactory dbf = XMLUtil.newXXEProtectedDocumentBuilderFactory();
605605
DocumentBuilder db = dbf.newDocumentBuilder();
606606
return db.parse(src);
607607
}

0 commit comments

Comments
 (0)