You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Alexei Zakharov (JIRA)" <ji...@apache.org> on 2007/03/26 09:25:32 UTC

[jira] Assigned: (HARMONY-3479) [classlib][swing][netbeans] TransferHandler.getPasteAction().actionPerformed() doesn't check if accessClipboard is allowed

     [ https://issues.apache.org/jira/browse/HARMONY-3479?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Alexei Zakharov reassigned HARMONY-3479:
----------------------------------------

    Assignee: Alexei Zakharov

> [classlib][swing][netbeans] 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
>         Assigned To: Alexei Zakharov
>         Attachments: Harmony-3479-fix.patch, Harmony-3479-make.patch, Harmony-3479-test.patch
>
>
> 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.