jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl.java
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl.java Wed Jan 15 17:11:43 2014 -0800
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl.java Wed Jan 22 09:37:54 2014 -0800
@@ -1308,6 +1308,7 @@
fAttributes.removeAllAttributes();
+ checkDepth(rawname);
if(!seekCloseOfStartTag()){
fReadingAttributes = true;
fAttributeCacheUsedCount =0;
@@ -1912,6 +1913,21 @@
// utility methods
/**
+ * Check if the depth exceeds the maxElementDepth limit
+ * @param elementName name of the current element
+ */
+ void checkDepth(String elementName) {
+ fLimitAnalyzer.addValue(Limit.MAX_ELEMENT_DEPTH_LIMIT, elementName, fElementStack.fDepth);
+ if (fSecurityManager.isOverLimit(Limit.MAX_ELEMENT_DEPTH_LIMIT,fLimitAnalyzer)) {
+ fSecurityManager.debugPrint(fLimitAnalyzer);
+ reportFatalError("MaxElementDepthLimit", new Object[]{elementName,
+ fLimitAnalyzer.getTotalValue(Limit.MAX_ELEMENT_DEPTH_LIMIT),
+ fSecurityManager.getLimit(Limit.MAX_ELEMENT_DEPTH_LIMIT),
+ "maxElementDepth"});
+ }
+ }
+
+ /**
* Calls document handler with a single character resulting from
* built-in entity resolution.
*