< prev index next >

test/jdk/java/lang/String/concat/WithSecurityManager.java

Print this page
rev 54607 : 8222895: StackOverflowError in custom security manager that relies on ClassSpecializer
Reviewed-by: TBD

*** 24,34 **** import java.security.Permission; /** * @test * @summary String concatenation fails with a custom SecurityManager that uses concatenation ! * @bug 8155090 8158851 * @requires !vm.graal.enabled * * @compile WithSecurityManager.java * * @run main/othervm -Xverify:all WithSecurityManager --- 24,34 ---- import java.security.Permission; /** * @test * @summary String concatenation fails with a custom SecurityManager that uses concatenation ! * @bug 8155090 8158851 8222895 * @requires !vm.graal.enabled * * @compile WithSecurityManager.java * * @run main/othervm -Xverify:all WithSecurityManager
*** 53,80 **** { SecurityManager sm = new SecurityManager() { @Override public void checkPermission(Permission perm) { String abc = "abc"; ! String full = abc + "def"; } }; System.setSecurityManager(sm); ! ClassLoader cl = new ClassLoader() { ! }; } // Second time should succeed to run after bootstrapping { SecurityManager sm = new SecurityManager() { @Override public void checkPermission(Permission perm) { String abc = "abc"; ! String full = abc + "def"; } }; System.setSecurityManager(sm); ! ClassLoader cl = new ClassLoader() { ! }; } } } --- 53,92 ---- { SecurityManager sm = new SecurityManager() { @Override public void checkPermission(Permission perm) { String abc = "abc"; ! int ival = perm.hashCode(); ! String full = abc + "abc"; ! // Contorted to avoid sweeping cases where we've ! // pre-generated commonly used species under the rug ! full = "abc" + ival + "def" + abc + "def" + abc + "def" + ! abc + "def" + ival + "def" + abc + "def" + ! abc + "def" + abc + "def" + abc + "def"; } }; System.setSecurityManager(sm); ! ClassLoader cl = new ClassLoader() {}; } // Second time should succeed to run after bootstrapping { SecurityManager sm = new SecurityManager() { @Override public void checkPermission(Permission perm) { String abc = "abc"; ! int ival = perm.hashCode(); ! String full = abc + "abc"; ! // Contorted variant to avoid sweeping cases where we've ! // pre-generated commonly used species under the rug ! full = "abc" + ival + "def" + abc + "def" + abc + "def" + ! abc + "def" + ival + "def" + abc + "def" + ! abc + "def" + abc + "def" + abc + "def"; } }; + + // Provoke checkPermission invocation System.setSecurityManager(sm); ! ClassLoader cl = new ClassLoader() {}; } } }
< prev index next >