--- old/src/share/classes/java/util/logging/ConsoleHandler.java 2013-12-14 18:14:17.466838806 +0100 +++ new/src/share/classes/java/util/logging/ConsoleHandler.java 2013-12-14 18:14:17.344840959 +0100 @@ -26,6 +26,9 @@ package java.util.logging; +import java.security.AccessController; +import java.security.PrivilegedAction; + /** * This Handler publishes log records to System.err. * By default the SimpleFormatter is used to generate brief summaries. @@ -66,25 +69,30 @@ * @since 1.4 */ public class ConsoleHandler extends StreamHandler { - // Private method to configure a ConsoleHandler from LogManager + // Private PrivilegedAction to configure a ConsoleHandler from LogManager // properties and/or default values as specified in the class // javadoc. - private void configure() { - LogManager manager = LogManager.getLogManager(); - String cname = getClass().getName(); - - setLevel(manager.getLevelProperty(cname +".level", Level.INFO)); - setFilter(manager.getFilterProperty(cname +".filter", null)); - setFormatter(manager.getFormatterProperty(cname +".formatter", new SimpleFormatter())); - try { - setEncoding(manager.getStringProperty(cname +".encoding", null)); - } catch (Exception ex) { + private class ConfigureAction implements PrivilegedAction { + @Override + public Void run() { + LogManager manager = LogManager.getLogManager(); + String cname = ConsoleHandler.this.getClass().getName(); + + setLevel(manager.getLevelProperty(cname +".level", Level.INFO)); + setFilter(manager.getFilterProperty(cname +".filter", null)); + setFormatter(manager.getFormatterProperty(cname +".formatter", new SimpleFormatter())); try { - setEncoding(null); - } catch (Exception ex2) { - // doing a setEncoding with null should always work. - // assert false; + setEncoding(manager.getStringProperty(cname +".encoding", null)); + } catch (Exception ex) { + try { + setEncoding(null); + } catch (Exception ex2) { + // doing a setEncoding with null should always work. + // assert false; + } } + setOutputStream(System.err); + return null; } } @@ -96,10 +104,8 @@ * */ public ConsoleHandler() { - sealed = false; - configure(); - setOutputStream(System.err); - sealed = true; + AccessController.doPrivileged(new ConfigureAction(), + null, LogManager.controlPermission); } /**