7143711: Feature added by 7053556 should not override what's set by the constructor in secure mode
Reviewed-by: hawtin
diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerFactoryImpl.java b/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerFactoryImpl.java
index 797d1ad..26b2f56 100644
--- a/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerFactoryImpl.java
+++ b/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerFactoryImpl.java
@@ -448,7 +448,9 @@
return;
}
else if (name.equals(XalanConstants.ORACLE_FEATURE_SERVICE_MECHANISM)) {
- _useServicesMechanism = value;
+ //in secure mode, let _useServicesMechanism be determined by the constructor
+ if (!_isSecureMode)
+ _useServicesMechanism = value;
}
else {
// unknown feature
diff --git a/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/XMLSchemaFactory.java b/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/XMLSchemaFactory.java
index 52c2313..fece15d 100644
--- a/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/XMLSchemaFactory.java
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/jaxp/validation/XMLSchemaFactory.java
@@ -351,6 +351,10 @@
fSecurityManager = value ? new SecurityManager() : null;
fXMLSchemaLoader.setProperty(SECURITY_MANAGER, fSecurityManager);
return;
+ } else if (name.equals(Constants.ORACLE_FEATURE_SERVICE_MECHANISM)) {
+ //in secure mode, let _useServicesMechanism be determined by the constructor
+ if (System.getSecurityManager() != null)
+ return;
}
try {
fXMLSchemaLoader.setFeature(name, value);
diff --git a/jaxp/src/com/sun/org/apache/xpath/internal/jaxp/XPathFactoryImpl.java b/jaxp/src/com/sun/org/apache/xpath/internal/jaxp/XPathFactoryImpl.java
index 1f0305d..7159896 100644
--- a/jaxp/src/com/sun/org/apache/xpath/internal/jaxp/XPathFactoryImpl.java
+++ b/jaxp/src/com/sun/org/apache/xpath/internal/jaxp/XPathFactoryImpl.java
@@ -186,7 +186,9 @@
return;
}
if (name.equals(XalanConstants.ORACLE_FEATURE_SERVICE_MECHANISM)) {
- _useServicesMechanism = value;
+ //in secure mode, let _useServicesMechanism be determined by the constructor
+ if (!_isSecureMode)
+ _useServicesMechanism = value;
return;
}