You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by rj...@apache.org on 2008/09/06 23:47:22 UTC
svn commit: r692745 - in /tomcat/tc6.0.x/trunk: STATUS.txt
java/org/apache/juli/ClassLoaderLogManager.java webapps/docs/changelog.xml
Author: rjung
Date: Sat Sep 6 14:47:21 2008
New Revision: 692745
URL: http://svn.apache.org/viewvc?rev=692745&view=rev
Log:
Backport Logging of access control problems when setting up
per context logging under the security manager.
http://svn.apache.org/viewvc?rev=691675&view=rev
http://svn.apache.org/viewvc?rev=691677&view=rev
http://svn.apache.org/viewvc?rev=691887&view=rev
Also backported generics use
http://svn.apache.org/viewvc?view=rev&revision=687508
because it is low risk (generics) and keeps the class
in sync between trunk and tc6.0.x.
Modified:
tomcat/tc6.0.x/trunk/STATUS.txt
tomcat/tc6.0.x/trunk/java/org/apache/juli/ClassLoaderLogManager.java
tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml
Modified: tomcat/tc6.0.x/trunk/STATUS.txt
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/STATUS.txt?rev=692745&r1=692744&r2=692745&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/STATUS.txt (original)
+++ tomcat/tc6.0.x/trunk/STATUS.txt Sat Sep 6 14:47:21 2008
@@ -128,19 +128,6 @@
+1: markt
-1:
-* Backport Logging of access control problems when setting up
- per context logging under the security manager.
- http://svn.apache.org/viewvc?rev=691675&view=rev
- http://svn.apache.org/viewvc?rev=691677&view=rev
- http://svn.apache.org/viewvc?rev=691887&view=rev
- I suggest to also backport
- http://svn.apache.org/viewvc?view=rev&revision=687508
- because it is low risk (generics) and keeps the class
- in sync between trunk and tc6.0.x.
- +1: rjung, remm, markt
- -1:
- rjung: improved the logging with r691887.
-
* ETag improvement: https://issues.apache.org/bugzilla/show_bug.cgi?id=45735
+1: remm, markt
-1:
Modified: tomcat/tc6.0.x/trunk/java/org/apache/juli/ClassLoaderLogManager.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/juli/ClassLoaderLogManager.java?rev=692745&r1=692744&r2=692745&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/juli/ClassLoaderLogManager.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/juli/ClassLoaderLogManager.java Sat Sep 6 14:47:21 2008
@@ -19,11 +19,13 @@
import java.io.File;
import java.io.FileInputStream;
+import java.io.FilePermission;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLClassLoader;
import java.security.AccessControlException;
import java.security.AccessController;
+import java.security.Permission;
import java.security.PrivilegedAction;
import java.util.Collections;
import java.util.Enumeration;
@@ -135,9 +137,9 @@
Handler handler = null;
ClassLoader current = classLoader;
while (current != null) {
- info = (ClassLoaderLogInfo) classLoaderLoggers.get(current);
+ info = classLoaderLoggers.get(current);
if (info != null) {
- handler = (Handler) info.handlers.get(handlerName);
+ handler = info.handlers.get(handlerName);
if (handler != null) {
break;
}
@@ -174,7 +176,7 @@
public synchronized Logger getLogger(final String name) {
ClassLoader classLoader = Thread.currentThread()
.getContextClassLoader();
- return (Logger) getClassLoaderInfo(classLoader).loggers.get(name);
+ return getClassLoaderInfo(classLoader).loggers.get(name);
}
@@ -198,7 +200,7 @@
public String getProperty(String name) {
ClassLoader classLoader = Thread.currentThread()
.getContextClassLoader();
- String prefix = (String) this.prefix.get();
+ String prefix = this.prefix.get();
if (prefix != null) {
name = prefix + name;
}
@@ -210,7 +212,7 @@
if ((result == null) && (info.props.isEmpty())) {
ClassLoader current = classLoader.getParent();
while (current != null) {
- info = (ClassLoaderLogInfo) classLoaderLoggers.get(current);
+ info = classLoaderLoggers.get(current);
if (info != null) {
result = info.props.getProperty(name);
if ((result != null) || (!info.props.isEmpty())) {
@@ -265,8 +267,7 @@
if (classLoader == null) {
classLoader = ClassLoader.getSystemClassLoader();
}
- ClassLoaderLogInfo info = (ClassLoaderLogInfo) classLoaderLoggers
- .get(classLoader);
+ ClassLoaderLogInfo info = classLoaderLoggers.get(classLoader);
if (info == null) {
final ClassLoader classLoaderParam = classLoader;
AccessController.doPrivileged(new PrivilegedAction() {
@@ -279,7 +280,7 @@
return null;
}
});
- info = (ClassLoaderLogInfo) classLoaderLoggers.get(classLoader);
+ info = classLoaderLoggers.get(classLoader);
}
return info;
}
@@ -304,7 +305,21 @@
}
} catch (AccessControlException ace) {
// No permission to configure logging in context
- // Ignore and carry on
+ // Log and carry on
+ ClassLoaderLogInfo info = classLoaderLoggers.get(ClassLoader.getSystemClassLoader());
+ if (info != null) {
+ Logger log = info.loggers.get("");
+ if (log != null) {
+ Permission perm = ace.getPermission();
+ if (perm instanceof FilePermission && perm.getActions().equals("read")) {
+ log.warning("Reading " + perm.getName() + " is not permitted. See \"per context logging\" in the default catalina.policy file.");
+ }
+ else {
+ log.warning("Reading logging.properties is not permitted in some context. See \"per context logging\" in the default catalina.policy file.");
+ log.warning("Original error was: " + ace.getMessage());
+ }
+ }
+ }
}
if ((is == null) && (classLoader == ClassLoader.getSystemClassLoader())) {
String configFileStr = System.getProperty("java.util.logging.config.file");
@@ -362,8 +377,7 @@
protected void readConfiguration(InputStream is, ClassLoader classLoader)
throws IOException {
- ClassLoaderLogInfo info =
- (ClassLoaderLogInfo) classLoaderLoggers.get(classLoader);
+ ClassLoaderLogInfo info = classLoaderLoggers.get(classLoader);
try {
info.props.load(is);
@@ -503,8 +517,7 @@
nextName = name.substring(0, dotIndex);
name = name.substring(dotIndex + 1);
}
- LogNode childNode = (LogNode) currentNode.children
- .get(nextName);
+ LogNode childNode = currentNode.children.get(nextName);
if (childNode == null) {
childNode = new LogNode(currentNode);
currentNode.children.put(nextName, childNode);
Modified: tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml?rev=692745&r1=692744&r2=692745&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Sat Sep 6 14:47:21 2008
@@ -35,6 +35,10 @@
<section name="Tomcat 6.0.19 (remm)">
<subsection name="Catalina">
<changelog>
+ <fix>
+ Log AccessControlException for context specific logging.properties
+ during startup with security manager. (rjung)
+ </fix>
<add>
<bug>41407</bug>: Add CLIENT-CERT support to the JAAS Realm. (markt)
</add>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org