[logback-dev] [JIRA] Resolved: (LBCLASSIC-263) Logback Classic causes SecurityException
Ceki Gulcu (JIRA)
noreply-jira at qos.ch
Thu Sep 8 23:02:16 CEST 2011
[ http://jira.qos.ch/browse/LBCLASSIC-263?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ceki Gulcu resolved LBCLASSIC-263.
----------------------------------
Resolution: Won't Fix
I've added a new method getClassLoaderAsPrivileged in the ch.qos.logback.core.util.Loader class which was changed as follows:
package ch.qos.logback.core.util;
public class Loader {
private static boolean HAS_GET_CLASS_LOADER_PERMISSION = false;
static {
HAS_GET_CLASS_LOADER_PERMISSION =
AccessController.doPrivileged(new PrivilegedAction<Boolean>() {
public Boolean run() {
try {
AccessController.checkPermission(
new RuntimePermission("getClassLoader"));
return true;
} catch (AccessControlException e) {
return false;
}
}
});
}
public static ClassLoader getClassLoaderAsPrivileged(final Class clazz) {
if (!HAS_GET_CLASS_LOADER_PERMISSION)
return null;
else
return AccessController.doPrivileged(
new PrivilegedAction<ClassLoader>() {
public ClassLoader run() {
return clazz.getClassLoader();
}
});
}
}
The changed were committed in [1].
However, I did not change PackagingDataCalculator to use Loader#getClassLoaderAsPrivileged due to performance reasons. Collecting packaging data is already rather expensive and I do not wish to add to the cost. You have two options:
1) make the single line change yourself
2) add %ex at the end of your conversion patterns. This will avoid using the default %xEx. See [2] for documentation.
[1] http://github.com/ceki/logback/commit/75da45d0f69
[2] http://logback.qos.ch/manual/layouts.html#xThrowable
> Logback Classic causes SecurityException
> ----------------------------------------
>
> Key: LBCLASSIC-263
> URL: http://jira.qos.ch/browse/LBCLASSIC-263
> Project: logback-classic
> Issue Type: Bug
> Affects Versions: 0.9.28
> Reporter: NC
> Assignee: Logback dev list
> Attachments: PackagingDataCalculator.diff
>
>
> PackagingDataCalculator invokes Class.getClassLoader(). This method throws a SecurityException when running under a security manager and that manager denies access to the ClassLoader.
> I'm submitting a PackagingDataCalculator patch which wraps the getClassLoader() invocation in a doPrivileged block. This allows these calls to succeed when the getClassLoader RuntimePermission is granted to logback-classic.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.qos.ch/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the logback-dev
mailing list