I could not run log4j in untrusted applets until I added this
patch to Category.   The difficulty was that the code was
handling a security exception in the first check to System.getProperty()
correctly, but then turned around and issued another check to
System.getProperty()
without any SecurityException handling code!

Anyway a simple little fix, included for those who are interested in it.

Thanks!
Steve

  /** Search for the properties file log4j.properties in the CLASSPATH.  */
  static {
    String override = null;
    try {
      override=System.getProperty(DEFAULT_INIT_OVERRIDE_KEY, override);
    } catch(SecurityException e) {
      LogLog.debug("Could not read system property \""+
                           DEFAULT_INIT_OVERRIDE_KEY +
                           "\", assuming default value of false.", e);
    }
    // if there is no default init override, them get the resource
    // specified by the user or the default config file.
    if(override == null || "false".equalsIgnoreCase(override)) {
      // Handle security exception again
      String resource = null;
      try {
        resource = System.getProperty(DEFAULT_CONFIGURATION_KEY,
                                           DEFAULT_CONFIGURATION_FILE);
      } catch(SecurityException e) {
        LogLog.debug("Could not read system property \""+
                             DEFAULT_CONFIGURATION_KEY +
                             "\", assuming default configuration file \"" +
                             DEFAULT_CONFIGURATION_FILE + "\".", e);
        resource = DEFAULT_CONFIGURATION_FILE;
      }
      URL url = null;
      try {
        url = new URL(resource);
      } catch (MalformedURLException ex) {
        // so, resource is not a URL:
        // attempt to get the resource in the most generic way:
        url = Category.class.getResource(resource);
        if(url == null) {
          // if that doen't work, then try again in a slightly
          // different way
          ClassLoader loader = Category.class.getClassLoader();
          if(loader != null) {
            url = loader.getResource(resource);
          }
        }
      }

      // If we have a non-null url, then delegate the rest of the
      // configuration to the OptionConverter.selectAndConfigure
      // method.
      if(url != null) {
        OptionConverter.selectAndConfigure(url, defaultHierarchy);
      } else {
        LogLog.debug("Could not find resource: ["+resource+"].");
      }
    }
  }

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to