Skip to content

Commit 109d7ae

Browse files
authored
Disabled XML external entity processing and cleaned up ElementNode.java (#511)
* disable XML external entity processing and cleaned up ElementNode.java * rethrowing caught exceptions * switched to IllegalStateException
1 parent 291f6b9 commit 109d7ae

2 files changed

Lines changed: 21 additions & 35 deletions

File tree

src/main/java/com/teragrep/pth_10/ast/bo/ElementNode.java

Lines changed: 15 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747

4848
import org.w3c.dom.Element;
4949

50+
import javax.xml.XMLConstants;
5051
import javax.xml.transform.*;
5152
import javax.xml.transform.dom.DOMSource;
5253
import javax.xml.transform.stream.StreamResult;
@@ -57,51 +58,32 @@
5758
*/
5859
public class ElementNode extends Node {
5960

60-
Element val = null;
61-
62-
public ElementNode(Token token) {
63-
super(token);
64-
}
61+
private final Element element;
6562

6663
public ElementNode(Element element) {
67-
this.val = element;
64+
this.element = element;
6865
}
6966

7067
public Element getElement() {
71-
return val;
68+
return element;
7269
}
7370

71+
@Override
7472
public String toString() {
75-
String str = null;
76-
try {
77-
TransformerFactory transFactory = TransformerFactory.newInstance();
78-
Transformer transformer = transFactory.newTransformer();
79-
StringWriter buffer = new StringWriter();
80-
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
81-
transformer.transform(new DOMSource(val), new StreamResult(buffer));
82-
str = buffer.toString();
83-
}
84-
catch (TransformerConfigurationException tex) {
85-
}
86-
catch (TransformerException ex) {
87-
}
88-
return str;
89-
}
90-
91-
public static String toString(Element val) {
92-
String str = null;
73+
final StringWriter buffer = new StringWriter();
9374
try {
94-
TransformerFactory transFactory = TransformerFactory.newInstance();
95-
Transformer transformer = transFactory.newTransformer();
96-
StringWriter buffer = new StringWriter();
75+
final TransformerFactory transFactory = TransformerFactory.newInstance();
76+
transFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
77+
final Transformer transformer = transFactory.newTransformer();
9778
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
98-
transformer.transform(new DOMSource(val), new StreamResult(buffer));
99-
str = buffer.toString();
79+
transformer.transform(new DOMSource(element), new StreamResult(buffer));
10080
}
101-
catch (TransformerConfigurationException tex) {
81+
catch (final TransformerConfigurationException tex) {
82+
throw new IllegalStateException(tex.getMessage());
10283
}
103-
catch (TransformerException ex) {
84+
catch (final TransformerException ex) {
85+
throw new IllegalStateException(ex.getMessage());
10486
}
105-
return str;
87+
return buffer.toString();
10688
}
10789
}

src/main/java/com/teragrep/pth_10/ast/bo/SubSearchNode.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,13 +121,17 @@ public Element asElement(Document d) {
121121
Element el = d.createElement("indexstatement");
122122
el.setAttribute("OPERATION", "EQUALS");
123123
el.setAttribute("value", "%" + valList.get(0) + "%");
124-
LOGGER.info("Construct archiveQuery: <{}>", ElementNode.toString(el));
124+
if (LOGGER.isInfoEnabled()) {
125+
LOGGER.info("Construct archiveQuery: <{}>", new ElementNode(el));
126+
}
125127
if (valList.size() > 1) {
126128
for (int i = 1; i < valList.size(); i++) {
127129
Element e = d.createElement("indexstatement");
128130
e.setAttribute("OPERATION", "EQUALS");
129131
e.setAttribute("value", "%" + valList.get(i) + "%");
130-
LOGGER.info("Construct archiveQuery: <{}>", ElementNode.toString(el));
132+
if (LOGGER.isInfoEnabled()) {
133+
LOGGER.info("Construct archiveQuery: <{}>", new ElementNode(el));
134+
}
131135
Element andE = d.createElement("AND");
132136
andE.appendChild(el);
133137
andE.appendChild(e);

0 commit comments

Comments
 (0)