Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-7171776

one more setGlobalCurrentFocusCycleRoot call requires doPrivileged

XMLWordPrintable

    • b43
    • x86
    • generic
    • Verified

      The test case below throws unexpected security exception when run with SecurityManager:

      import java.awt.Dialog;
      import java.awt.Frame;
      import java.util.Timer;
      import java.util.TimerTask;

      /*
        @test
        @bug 7080109
        @summary Dialog.show() lacks doPrivileged() to access system event queue.
        @author ###@###.###: area=awt.dialog
        @run main/othervm/policy=java.policy -Djava.security.manager ModalDialogPermission
      */
      public final class ModalDialogPermission {

          public static void main(final String[] args) {
              Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
                  @Override
                  public void uncaughtException(final Thread t, final Throwable e) {
                      throw new RuntimeException(e);
                  }
              });
              final Frame frame = new Frame();
              final Dialog dialog = new Dialog(frame, "ModalDialog", true);
              final Timer t = new Timer();
              t.schedule(new TimerTask() {

                  @Override
                  public void run() {
                      dialog.setVisible(false);
                      dialog.dispose();
                  }
              }, 3000L);
              dialog.show();
              frame.dispose();
              t.cancel();
          }
      }

      java.security.AccessControlException: access denied ("java.awt.AWTPermission" "replaceKeyboardFocusManager")
          at java.security.AccessControlContext.checkPermission(AccessControlContext.java:364)
          at java.security.AccessController.checkPermission(AccessController.java:555)
          at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
          at java.awt.KeyboardFocusManager.checkReplaceKFMPermission(KeyboardFocusManager.java:3119)
          at java.awt.KeyboardFocusManager.setGlobalCurrentFocusCycleRoot(KeyboardFocusManager.java:1277)
          at java.awt.KeyboardFocusManager.setGlobalFocusOwner(KeyboardFocusManager.java:564)
          at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:524)
          at java.awt.Component.dispatchEventImpl(Component.java:4737)
          at java.awt.Container.dispatchEventImpl(Container.java:2287)
          at java.awt.Window.dispatchEventImpl(Window.java:2719)
          at java.awt.Component.dispatchEvent(Component.java:4691)
          at sun.awt.SunToolkit$3.run(SunToolkit.java:541)
          at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
          at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:701)
          at java.awt.EventQueue.access$000(EventQueue.java:102)
          at java.awt.EventQueue$3.run(EventQueue.java:662)
          at java.awt.EventQueue$3.run(EventQueue.java:660)
          at java.security.AccessController.doPrivileged(Native Method)
          at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
          at java.awt.EventQueue.dispatchEvent(EventQueue.java:671)
          at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
          at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
          at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:155)

            ant Anton Tarasov (Inactive)
            ant Anton Tarasov (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: