[ 
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

        
_______________________________________________
logback-dev mailing list
[email protected]
http://qos.ch/mailman/listinfo/logback-dev

Reply via email to