Author: veithen
Date: Sun May 16 21:17:02 2010
New Revision: 944915
URL: http://svn.apache.org/viewvc?rev=944915&view=rev
Log:
AXIS2-4450: Strictly forbid document type declarations in both SOAP and plain
XML requests.
Modified:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/BuilderUtil.java
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/SOAPBuilder.java
Modified:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/BuilderUtil.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/BuilderUtil.java?rev=944915&r1=944914&r2=944915&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/BuilderUtil.java
(original)
+++
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/BuilderUtil.java
Sun May 16 21:17:02 2010
@@ -32,6 +32,7 @@ import org.apache.axiom.om.impl.MTOMCons
import org.apache.axiom.om.impl.builder.StAXBuilder;
import org.apache.axiom.om.impl.builder.StAXOMBuilder;
import org.apache.axiom.om.impl.builder.XOPAwareStAXOMBuilder;
+import org.apache.axiom.om.util.StAXParserConfiguration;
import org.apache.axiom.om.util.StAXUtils;
import org.apache.axiom.soap.SOAP11Constants;
import org.apache.axiom.soap.SOAP12Constants;
@@ -227,8 +228,11 @@ public class BuilderUtil {
public static StAXBuilder getPOXBuilder(InputStream inStream, String
charSetEnc)
throws XMLStreamException {
StAXBuilder builder;
+ // We use the StAXParserConfiguration.SOAP here as well because we
don't want to allow
+ // document type declarations (that potentially reference external
entities), even
+ // in plain XML messages.
XMLStreamReader xmlreader =
- StAXUtils.createXMLStreamReader(inStream, charSetEnc);
+ StAXUtils.createXMLStreamReader(StAXParserConfiguration.SOAP,
inStream, charSetEnc);
builder = new StAXOMBuilder(xmlreader);
return builder;
}
Modified:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/SOAPBuilder.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/SOAPBuilder.java?rev=944915&r1=944914&r2=944915&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/SOAPBuilder.java
(original)
+++
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/builder/SOAPBuilder.java
Sun May 16 21:17:02 2010
@@ -21,6 +21,7 @@ package org.apache.axis2.builder;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.impl.builder.StAXBuilder;
+import org.apache.axiom.om.util.StAXParserConfiguration;
import org.apache.axiom.om.util.StAXUtils;
import org.apache.axiom.om.util.DetachableInputStream;
import org.apache.axiom.soap.SOAPEnvelope;
@@ -54,8 +55,14 @@ public class SOAPBuilder implements Buil
PushbackInputStream pis = BuilderUtil.getPushbackInputStream(is);
String actualCharSetEncoding = BuilderUtil.getCharSetEncoding(pis,
charSetEncoding);
- // Get the XMLStreamReader for this input stream
- streamReader = StAXUtils.createXMLStreamReader(pis,
actualCharSetEncoding);
+ // Get the XMLStreamReader for this input stream.
+ // Note: StAXSOAPModelBuilder will trigger an exception when it
encounters a DTD event.
+ // However, with StAX implementations other than Woodstox,
this may already be
+ // too late. For these parsers, additional settings may be
required. We let
+ // the StAX dialect detector in Axiom apply the necessary
configuration.
+ // See also AXIS2-4450.
+ streamReader =
StAXUtils.createXMLStreamReader(StAXParserConfiguration.SOAP, pis,
+ actualCharSetEncoding);
StAXBuilder builder = new StAXSOAPModelBuilder(streamReader);
SOAPEnvelope envelope = (SOAPEnvelope)
builder.getDocumentElement();