test/jdk/vm/jit/ExceptionInInit.java
branchniosocketimpl-branch
changeset 57268 adcdd45830a0
parent 57260 bb5198288772
parent 54155 b5a73f22b2bd
child 57270 3519688a4e4d
equal deleted inserted replaced
57260:bb5198288772 57268:adcdd45830a0
     1 /*
       
     2  * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
       
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       
     4  *
       
     5  * This code is free software; you can redistribute it and/or modify it
       
     6  * under the terms of the GNU General Public License version 2 only, as
       
     7  * published by the Free Software Foundation.
       
     8  *
       
     9  * This code is distributed in the hope that it will be useful, but WITHOUT
       
    10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       
    11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       
    12  * version 2 for more details (a copy is included in the LICENSE file that
       
    13  * accompanied this code).
       
    14  *
       
    15  * You should have received a copy of the GNU General Public License version
       
    16  * 2 along with this work; if not, write to the Free Software Foundation,
       
    17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       
    18  *
       
    19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
       
    20  * or visit www.oracle.com if you need additional information or have any
       
    21  * questions.
       
    22  */
       
    23 
       
    24 /*
       
    25  * @test
       
    26  * @bug 4165973
       
    27  * @summary Attempt to read inaccessible property can produce
       
    28  *          exception of the wrong type.
       
    29  * @author Tom Rodriguez
       
    30  *
       
    31  * @modules java.rmi
       
    32  */
       
    33 
       
    34 import java.security.AccessController;
       
    35 import java.security.PrivilegedAction;
       
    36 
       
    37 public class ExceptionInInit {
       
    38 
       
    39     public static void main(String[] args) {
       
    40 
       
    41         Test test = null;
       
    42 
       
    43         try {
       
    44             System.setSecurityManager(new java.rmi.RMISecurityManager());
       
    45             Test.showTest();
       
    46         } catch (ExceptionInInitializerError e) {
       
    47         }
       
    48     }
       
    49 
       
    50     public static class FooBar {
       
    51         static String test = "test";
       
    52         FooBar(String test) {
       
    53             this.test = test;
       
    54         }
       
    55     }
       
    56 
       
    57     public static class Test extends FooBar {
       
    58 
       
    59         /*
       
    60          * An AccessControlException is thrown in the static initializer of the
       
    61          * class FooBar. This exception should produce an ExceptionInInitializer
       
    62          * error. Instead it causes a more cryptic ClassNotFound error.
       
    63          *
       
    64          * The following is an excerpt from the output from java.security.debug=all
       
    65          *
       
    66          * access: access denied (java.util.PropertyPermission test.src read)
       
    67          * java.lang.Exception: Stack trace
       
    68          *         at java.lang.Thread.dumpStack(Thread.java:938)
       
    69          *         at java.security.AccessControlContext.checkPermission(AccessControlContext.java:184)
       
    70          *         at java.security.AccessController.checkPermission(AccessController.java:402)
       
    71          *         at java.lang.SecurityManager.checkPermission(SecurityManager.java:516)
       
    72          *         at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1035)
       
    73          *         at java.lang.System.getProperty(System.java:441)
       
    74          *         at sun.security.action.GetPropertyAction.run(GetPropertyAction.java:73)
       
    75          *         at java.security.AccessController.doPrivileged(Native Method)
       
    76          *         at ExceptionInInit$Test.&#60clinit>(ExceptionInInit.java:33)
       
    77          *         at ExceptionInInit.main(ExceptionInInit.java:18)
       
    78          * access: domain that failed ProtectionDomain (file:/tmp/exceptionInInit/<no certificates>)
       
    79          *
       
    80          * The following exception is occurring when this test program tries
       
    81          * to access the test.src property.
       
    82          */
       
    83         private static String test =
       
    84             AccessController.doPrivileged((PrivilegedAction<String>)() -> System.getProperty("test.src", "."));
       
    85 
       
    86         Test(String test) {
       
    87             super(test);
       
    88         }
       
    89         public static void showTest() {
       
    90             System.err.println(test);
       
    91         }
       
    92     }
       
    93 }