harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vasily Zakharov (JIRA)" <j...@apache.org>
Subject [jira] Created: (HARMONY-3479) [classlib][awt][netbeans] javax.swing.TransferHandler.getPasteAction().actionPerformed() doesn't check if accessClipboard is allowed
Date Thu, 22 Mar 2007 21:15:32 GMT
[classlib][awt][netbeans] javax.swing.TransferHandler.getPasteAction().actionPerformed() doesn't
check if accessClipboard is allowed
------------------------------------------------------------------------------------------------------------------------------------

                 Key: HARMONY-3479
                 URL: https://issues.apache.org/jira/browse/HARMONY-3479
             Project: Harmony
          Issue Type: Bug
          Components: App-Oriented Bug Reports, Classlib
            Reporter: Vasily Zakharov


Consider the following test:

import java.awt.AWTPermission;
import java.awt.event.ActionEvent;
import java.security.Permission;
import javax.swing.Action;
import javax.swing.JPanel;
import javax.swing.TransferHandler;

public class Test {

    private static boolean flag = false;

    public static void main(String args[]) throws Exception {
        System.setSecurityManager(new TestSecurityManager());
        Action action = TransferHandler.getPasteAction();
        ActionEvent event = new ActionEvent(new JPanel(), 0, "");
        System.out.println("Before");
        action.actionPerformed(event);
        System.out.println("After");
        System.out.println(flag ? "SUCCESS" : "FAIL");
    }

    private static class TestSecurityManager extends SecurityManager {
        public void checkPermission(Permission perm) {
            if ((perm instanceof AWTPermission)
                    && "accessClipboard".equals(perm.getName())) {
                flag = true;
                new Throwable().printStackTrace();
            }
        }
    }
}

I inserted stack printing to see the stack of calls that leads to security check on RI.

Output on RI:

Before
java.lang.Throwable
        at Test$TestSecurityManager.checkPermission(Test.java:27)
        at java.lang.SecurityManager.checkSystemClipboardAccess(Unknown Source)
        at com.sun.java.swing.SwingUtilities2.canAccessSystemClipboard(Unknown Source)
        at javax.swing.TransferHandler$TransferAction.getClipboard(Unknown Source)
        at javax.swing.TransferHandler$TransferAction.actionPerformed(Unknown Source)
        at Test.main(Test.java:17)
java.lang.Throwable
        at Test$TestSecurityManager.checkPermission(Test.java:27)
        at java.lang.SecurityManager.checkSystemClipboardAccess(Unknown Source)
        at sun.awt.windows.WToolkit.getSystemClipboard(Unknown Source)
        at javax.swing.TransferHandler$TransferAction.getClipboard(Unknown Source)
        at javax.swing.TransferHandler$TransferAction.actionPerformed(Unknown Source)
        at Test.main(Test.java:17)
After
SUCCESS

Output on Harmony:

Before
After
FAIL

The same problem also occurs for getCopyAction() and getCutAction(), probably this is the
same problem.

At first look it seems to be a Swing problem, but my guess is the actual problem really lays
in the AWT layer.

This issue was discovered while trying to run Netbeans on Harmony.


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message