You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by mr...@apache.org on 2008/09/29 00:35:21 UTC
svn commit: r699918 -
/xerces/java/trunk/src/org/apache/xerces/dom/DOMConfigurationImpl.java
Author: mrglavas
Date: Sun Sep 28 15:35:21 2008
New Revision: 699918
URL: http://svn.apache.org/viewvc?rev=699918&view=rev
Log:
Allow applications to set a SecurityManager on the
DOMConfiguration to protect against DoS attacks.
Modified:
xerces/java/trunk/src/org/apache/xerces/dom/DOMConfigurationImpl.java
Modified: xerces/java/trunk/src/org/apache/xerces/dom/DOMConfigurationImpl.java
URL: http://svn.apache.org/viewvc/xerces/java/trunk/src/org/apache/xerces/dom/DOMConfigurationImpl.java?rev=699918&r1=699917&r2=699918&view=diff
==============================================================================
--- xerces/java/trunk/src/org/apache/xerces/dom/DOMConfigurationImpl.java (original)
+++ xerces/java/trunk/src/org/apache/xerces/dom/DOMConfigurationImpl.java Sun Sep 28 15:35:21 2008
@@ -147,9 +147,13 @@
protected static final String SYMBOL_TABLE =
Constants.XERCES_PROPERTY_PREFIX + Constants.SYMBOL_TABLE_PROPERTY;
- /** Property id: Grammar pool*/
+ /** Property id: Grammar pool. */
protected static final String GRAMMAR_POOL =
Constants.XERCES_PROPERTY_PREFIX + Constants.XMLGRAMMAR_POOL_PROPERTY;
+
+ /** property identifier: security manager. */
+ protected static final String SECURITY_MANAGER =
+ Constants.XERCES_PROPERTY_PREFIX + Constants.SECURITY_MANAGER_PROPERTY;
/** Property identifier: error handler. */
protected static final String ERROR_HANDLER =
@@ -328,6 +332,7 @@
ENTITY_MANAGER,
VALIDATION_MANAGER,
GRAMMAR_POOL,
+ SECURITY_MANAGER,
JAXP_SCHEMA_SOURCE,
JAXP_SCHEMA_LANGUAGE,
SCHEMA_LOCATION,
@@ -852,7 +857,7 @@
throw new DOMException(DOMException.TYPE_MISMATCH_ERR, msg);
}
}
- else if (name.equalsIgnoreCase(SYMBOL_TABLE)){
+ else if (name.equalsIgnoreCase(SYMBOL_TABLE)) {
// Xerces Symbol Table
if (value instanceof SymbolTable){
setProperty(SYMBOL_TABLE, value);
@@ -867,7 +872,7 @@
throw new DOMException(DOMException.TYPE_MISMATCH_ERR, msg);
}
}
- else if (name.equalsIgnoreCase (GRAMMAR_POOL)){
+ else if (name.equalsIgnoreCase (GRAMMAR_POOL)) {
if (value instanceof XMLGrammarPool || value == null) {
setProperty(GRAMMAR_POOL, value);
}
@@ -880,7 +885,20 @@
new Object[] { name });
throw new DOMException(DOMException.TYPE_MISMATCH_ERR, msg);
}
-
+ }
+ else if (name.equalsIgnoreCase (SECURITY_MANAGER)) {
+ if (value instanceof org.apache.xerces.util.SecurityManager || value == null) {
+ setProperty(SECURITY_MANAGER, value);
+ }
+ else {
+ // REVISIT: type mismatch
+ String msg =
+ DOMMessageFormatter.formatMessage(
+ DOMMessageFormatter.DOM_DOMAIN,
+ "TYPE_MISMATCH_ERR",
+ new Object[] { name });
+ throw new DOMException(DOMException.TYPE_MISMATCH_ERR, msg);
+ }
}
else {
// REVISIT: check if this is a boolean parameter -- type mismatch should be thrown.
@@ -972,12 +990,15 @@
else if (name.equalsIgnoreCase(ENTITY_RESOLVER)) {
return getEntityResolver();
}
- else if (name.equalsIgnoreCase(SYMBOL_TABLE)){
+ else if (name.equalsIgnoreCase(SYMBOL_TABLE)) {
return getProperty(SYMBOL_TABLE);
}
- else if (name.equalsIgnoreCase(GRAMMAR_POOL)){
+ else if (name.equalsIgnoreCase(GRAMMAR_POOL)) {
return getProperty(GRAMMAR_POOL);
}
+ else if (name.equalsIgnoreCase(SECURITY_MANAGER)) {
+ return getProperty(SECURITY_MANAGER);
+ }
else {
String msg =
DOMMessageFormatter.formatMessage(
@@ -1065,12 +1086,15 @@
else if (name.equalsIgnoreCase(ENTITY_RESOLVER)) {
return (value instanceof XMLEntityResolver) ? true : false;
}
- else if (name.equalsIgnoreCase(SYMBOL_TABLE)){
+ else if (name.equalsIgnoreCase(SYMBOL_TABLE)) {
// Xerces Symbol Table
- return (value instanceof SymbolTable) ? true : false ;
+ return (value instanceof SymbolTable) ? true : false;
+ }
+ else if (name.equalsIgnoreCase (GRAMMAR_POOL)) {
+ return (value instanceof XMLGrammarPool) ? true : false;
}
- else if (name.equalsIgnoreCase (GRAMMAR_POOL)){
- return (value instanceof XMLGrammarPool) ? true : false ;
+ else if (name.equalsIgnoreCase(SECURITY_MANAGER)) {
+ return (value instanceof org.apache.xerces.util.SecurityManager) ? true : false;
}
else {
//false if the parameter is not recognized or the requested value is not supported.
@@ -1120,6 +1144,7 @@
//Add recognized xerces features and properties
parameters.add(ENTITY_RESOLVER);
parameters.add(GRAMMAR_POOL);
+ parameters.add(SECURITY_MANAGER);
parameters.add(SYMBOL_TABLE);
parameters.add(SEND_PSVI);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org