You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by da...@apache.org on 2018/03/06 22:07:29 UTC
hive git commit: Revert "HIVE-18789: Disallow embedded element in
UDFXPathUtil (Daniel Dai, reviewed by Thejas Nair)"
Repository: hive
Updated Branches:
refs/heads/master c7d7b1530 -> abede8ee2
Revert "HIVE-18789: Disallow embedded element in UDFXPathUtil (Daniel Dai, reviewed by Thejas Nair)"
This reverts commit 4b22fcbdaf31a2ff8c4bcf6d69ce3dcb8a363b82.
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/abede8ee
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/abede8ee
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/abede8ee
Branch: refs/heads/master
Commit: abede8ee251875ae06ce4cf26ed4e0928bb3634d
Parents: c7d7b15
Author: Daniel Dai <da...@hortonworks.com>
Authored: Tue Mar 6 14:07:12 2018 -0800
Committer: Daniel Dai <da...@hortonworks.com>
Committed: Tue Mar 6 14:07:12 2018 -0800
----------------------------------------------------------------------
.../hadoop/hive/ql/udf/xml/UDFXPathUtil.java | 31 +-------------------
.../hive/ql/udf/xml/TestUDFXPathUtil.java | 31 +-------------------
2 files changed, 2 insertions(+), 60 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/abede8ee/ql/src/java/org/apache/hadoop/hive/ql/udf/xml/UDFXPathUtil.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/xml/UDFXPathUtil.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/xml/UDFXPathUtil.java
index 756a547..fbdd340 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/xml/UDFXPathUtil.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/xml/UDFXPathUtil.java
@@ -22,11 +22,7 @@ import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
-import javax.xml.XMLConstants;
import javax.xml.namespace.QName;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
@@ -42,13 +38,9 @@ import org.xml.sax.InputSource;
* of this class.
*/
public class UDFXPathUtil {
- static final boolean DISABLE_XINCLUDE = true;
- private DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- private DocumentBuilder builder = null;
private XPath xpath = XPathFactory.newInstance().newXPath();
private ReusableStringReader reader = new ReusableStringReader();
private InputSource inputSource = new InputSource(reader);
-
private XPathExpression expression = null;
private String oldPath = null;
@@ -74,33 +66,12 @@ public class UDFXPathUtil {
return null;
}
- if (builder == null){
- initializeDocumentBuilderFactory();
- try {
- builder = dbf.newDocumentBuilder();
- } catch (ParserConfigurationException e) {
- throw new RuntimeException("Error instantiating DocumentBuilder, cannot build xml parser", e);
- }
- }
-
reader.set(xml);
try {
- return expression.evaluate(builder.parse(inputSource), qname);
+ return expression.evaluate(inputSource, qname);
} catch (XPathExpressionException e) {
throw new RuntimeException ("Invalid expression '" + oldPath + "'", e);
- } catch (Exception e) {
- throw new RuntimeException("Error loading expression '" + oldPath + "'", e);
- }
- }
-
- private void initializeDocumentBuilderFactory() {
-
- dbf.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
- dbf.setAttribute(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "");
-
- if (DISABLE_XINCLUDE){
- dbf.setXIncludeAware(false);
}
}
http://git-wip-us.apache.org/repos/asf/hive/blob/abede8ee/ql/src/test/org/apache/hadoop/hive/ql/udf/xml/TestUDFXPathUtil.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/udf/xml/TestUDFXPathUtil.java b/ql/src/test/org/apache/hadoop/hive/ql/udf/xml/TestUDFXPathUtil.java
index b28ed63..2edcb7d 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/udf/xml/TestUDFXPathUtil.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/udf/xml/TestUDFXPathUtil.java
@@ -20,15 +20,12 @@ package org.apache.hadoop.hive.ql.udf.xml;
import javax.xml.xpath.XPathConstants;
-import org.apache.commons.io.FileUtils;
import org.junit.Test;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import static org.junit.Assert.*;
-import java.io.File;
-
public class TestUDFXPathUtil {
@Test
@@ -81,31 +78,5 @@ public class TestUDFXPathUtil {
assertTrue(result instanceof NodeList);
assertEquals(5, ((NodeList)result).getLength());
}
-
- @Test
- public void testEmbedFailure() throws Exception {
-
- String secretValue = String.valueOf(Math.random());
- File tempFile = File.createTempFile("verifyembed", ".tmp");
- tempFile.deleteOnExit();
- String fname = tempFile.getAbsolutePath();
-
- FileUtils.writeStringToFile(tempFile, secretValue);
-
- String xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
- "<!DOCTYPE test [ \n" +
- " <!ENTITY embed SYSTEM \"" + fname + "\"> \n" +
- "]>\n" +
- "<foo>&embed;</foo>";
-
- String evaled = null;
- Exception caught = null;
- try {
- evaled = new UDFXPathUtil().evalString(xml, "/foo");
- } catch (Exception e){
- caught = e;
- }
- assertTrue(caught.getCause().getMessage()
- .contains("\'file\' access is not allowed due to restriction set by the accessExternalDTD property"));
- }
+
}